使用参数包作为模板类的类型名

灯泡

这是否有效:https//godbolt.org/z/_i9dwf

#include <typeinfo>
#include <iostream>

template<typename T>
struct Container
{
};

void fn()
{
    return;
}

template<typename T, typename...type_pack>
void fn(const Container<T>& head, const Container<type_pack>&... args)
{
    std::cout << "I am an " << typeid(T).name() << "\n";
    fn(args...);
    return;
}

int main()
{
    fn(Container<int>{}, Container<float>{});
    return 0;
}

C ++是否实际上允许这种扩展,或者该实现是基于编译器定义的?我不相信我所看到的这种类型的语法的其他地方使用:Container<type_pack>&...这只是我想实现的目标,而令人惊讶的是它起作用了。所以我的问题是,这是UB,还是在标准中有明确提到的定义明确?

狂暴的

您要指定数量可变的参数,这些参数是类型的Container,其模板类型将用于推导type_pack例如,如果您致电:

fn(Container<int>{}, Container<float>{});

type_pack会代表一个float类型。但是,如果您致电:

fn(Container<int>{}, Container<float>{}, Container<int>{}, Container<std::string>{});

type_pack会代表的参数组float, int, std::string

该行为已由标准明确定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用类的类型作为模板的参数

来自分类Dev

如何使用使用参数包和类型名的类作为函数的输入参数(C ++)

来自分类Dev

如何使用模板化类作为参数类型?

来自分类Dev

嵌套类型作为基类的模板参数

来自分类Dev

使用模板类作为模板参数

来自分类Dev

如何使用模板类型作为函数参数派生抽象模板类(C ++ 11)

来自分类Dev

C ++:使用参数包具有可变类型参数的模板类继承

来自分类Dev

我如何使用模板类作为另一个类的类型名?

来自分类Dev

C ++-使用基类作为模板参数

来自分类Dev

使用自身作为参数的模板类。C ++

来自分类Dev

模板作为参数类型

来自分类Dev

模板类作为模板参数

来自分类Dev

使用is作为模板类型参数时可以访问类字段吗?

来自分类Dev

在没有模板参数的类模板中使用类名

来自分类Dev

具有包含类类型作为模板参数的成员

来自分类Dev

模板类型的成员枚举类作为函数参数

来自分类Dev

将函数作为类型未知的类的模板参数传递

来自分类Dev

具有包含类类型作为模板参数的成员

来自分类Dev

定义类型和使用该类型作为模板参数的函数

来自分类Dev

类模板方法的特化,类型名是类模板 - 错误:参数的类型/值不匹配

来自分类Dev

模板类作为模板参数默认参数

来自分类Dev

模板类作为模板类参数

来自分类Dev

模板类作为模板类参数

来自分类Dev

C ++将临时类型名类作为函数参数传递

来自分类Dev

模板参数作为返回类型

来自分类Dev

嵌套类作为模板参数

来自分类Dev

模板作为类中的参数

来自分类Dev

模板作为类中的参数

来自分类Dev

在类声明中使用自己的类作为类型参数约束

Related 相关文章

热门标签

归档