【发布时间】:2021-03-27 19:26:44
【问题描述】:
如何构造非类型模板参数的元组
template <auto... args>
void func()
{
std::tuple<decltype(args)...> t(args...);
cout << get<3>(t) << endl;
}
template <auto... args>
struct ZZ
{
std::tuple<decltype(args)...> t(args...);
};
int main()
{
func<1,2,3,4>();
ZZ<1,2,3> z;
}
虽然它适用于func,但它不适用于结构并导致编译错误(gcc trunk)
vs.cc:102:35: error: ‘args’ is not a type
102 | std::tuple<decltype(args)...> t(args...);
| ^~~~
【问题讨论】:
-
ZZ::t尝试声明一个函数。
标签: c++ c++11 templates c++17 variadic-templates