作为模板参数的 typeof(x) 是什么意思?

5

我有一个变量x,声明如下:

auto x = f(y);

在此处,f代表一个函数,y代表一个变量,它们都是在其他地方定义的。现在,我想声明一个包含x类型元素的std::vector,所以我写了以下代码:

std::vector<typeof(x)> v;

这会导致编译器错误。一种解决方案是在这里放置x的显式参数,但我认为这样做会破坏x声明中auto的意义!那么,如何在不显式编写类型的情况下将x的类型用作模板参数(以便在类型更改时,我的代码仍然有效)?

2
请使用 decltype() - DimChtz
2
你是不是想用decltype?或者你确实在使用GCC及其typeof?另外,你能否发布完整的编译器错误信息? - Cornstalks
@DimChtz decltype 起作用了。谢谢。 - a06e
@Cornstalks 我不知道 typeof 是GCC特有的。 - a06e
1
@becko 是的,但 decltype 是 C++ 11 的特性。 - DimChtz
1个回答

10

只有GNU编译器具有 typeof。取而代之,使用C++ 11特性decltype


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接