【发布时间】:2015-10-21 08:16:43
【问题描述】:
对于模板化的嵌套结构,我可以定义如下别名:
template<typename T>struct Struct
{
Struct(T value){}
template<typename T1> struct Nested
{
Nested(T1 value){}
};
};
template<typename T, typename T1>using NameT = struct Struct<T>::Nested<T1>;
using Name = NameT<int, double>; // Alias for a certain instance
谁能给我一个提示如何为可变参数声明别名?
template<typename... T>struct Struct
{
Struct(T... value){}
template<typename T1> struct Nested
{
Nested(T1 value){}
};
};
template<typename... T, typename T1>using NameT = struct Struct<T...>::Nested<T1>; // This seems ok
using Name = NameT<int, double>; // error C976: 'Name': too few template arguments
【问题讨论】:
-
不确定this is what you want;如果您使用例如编译铿锵声你会得到更多的描述性错误消息(例如
template parameter pack must be the last template parameter) -
@m.s.使用您的链接(clang),例如它告诉我的 C++14 设置,找不到用于初始化 'Name'(又名 'Struct
::Nested ')的匹配构造函数,但参数错误(应该是 Struct::Nested),所以我不确定是否所有编译器都可以处理上面的这段代码......
标签: c++ c++11 templates variadic-templates