C++ C++;嵌套结构&x27;typedefs(元类)编译错误
我想创建嵌套的模板结构typedef来创建一个带有元方法的元类,它可以有不同的参数。示例代码如下:C++ C++;嵌套结构&x27;typedefs(元类)编译错误,c++,template-meta-programming,C++,Template Meta Programming,我想创建嵌套的模板结构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 vec
#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;
}
#包括
使用名称空间std;
模板
结构向量{
枚举{
v1=1,
v2=2,
v3=三
};
模板
结构和{
类型定义向量<
一+向量::v1,
二+向量::v2,
三+向量::v3
>类型;
};
};
int main(){
向量c::sum::类型asdf;
返回0;
}
这给了我以下错误:
prog.cpp:24:error:“::type”尚未声明prog.cpp:24:error:
模板参数3是无效的程序cpp:24:错误:模板参数1
无效
示例可在此处找到:
我怎样才能实现我的目标?有可能吗?这在C++11中应该可以工作,看起来您使用了一个非常旧的编译器
vector_c<1,2,3>::sum<vector_c<3,2,1>>::type asdf;
vector_c<1,2,3>::sum<vector_c<3,2,1> >::type asdf;
// ^