gpt4 book ai didi

C++ 嵌套结构的 typedef(元类)编译错误

转载 作者:行者123 更新时间:2023-11-30 03:44:55 24 4
gpt4 key购买 nike

我想创建嵌套的模板化结构 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: error: '::type' has not been declared prog.cpp:24: error: template argument 3 is invalid prog.cpp:24: error: template argument 1 is invalid

例子可以在这里找到:

https://ideone.com/9BQ2FI

我怎样才能实现我的目标?可能吗?

最佳答案

这应该在 C++11 中工作,看起来你用一个相当老的编译器试过了。

vector_c<1,2,3>::sum<vector_c<3,2,1>>::type asdf;

在 C++11 之前,你不可能有没有嵌套模板空格的 >>>。如果您添加一个空格,它应该可以工作:

vector_c<1,2,3>::sum<vector_c<3,2,1> >::type asdf;
// ^

关于C++ 嵌套结构的 typedef(元类)编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35126370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com