我想创建嵌套的模板化结构typedef来创建一个带元方法的元类,它可以有不同的参数。示例代码如下:
#include <iostream>
using namespace std;
template <int one, int two, int three>
struct vector_c{
enum{
v1 = one,
v2 = two,
v3 = three
};
template <typename vector>
struct sum{
typedef vector_c<
one+vector::v1,
two+vector::v2,
three+vector::v3
> type;
};
};
int main() {
vector_c<1,2,3>::sum<vector_c<3,2,1>>::type asdf;
return 0;
}
这给了我以下错误:
prog.cpp:24:错误:':: type'尚未声明为prog.cpp:24:错误: 模板参数3无效prog.cpp:24:错误:模板参数1 无效
示例可以在这里找到:
我如何实现目标?有可能吗?
答案 0 :(得分:2)
这应该适用于C ++ 11,看起来你用一个很老的编译器尝试过这个。
>>
在C ++ 11之前,如果没有嵌套模板的空格,则无法vector_c<1,2,3>::sum<vector_c<3,2,1> >::type asdf;
// ^
。如果你添加一个空格它应该工作:
Computer Name,Msg 1,Msg 2
COMPUTER 1,Windows 8,Another msg
COMPUTER 2,Windows XP,Yet again another msg
COMPUTER 3,Access Denied,
COMPUTER 4,Windows 7,Message
COMPUTER 5,Access Denied,