【发布时间】:2016-03-24 12:24:55
【问题描述】:
我有一个变量x,声明为:
auto x = f(y);
其中f 是一个函数,y 是一个变量,两者都在其他地方定义。现在我想声明一个std::vector 持有x 类型的元素,所以我写:
std::vector<typeof(x)> v;
这会导致编译器错误。一个解决方案是将x 的显式参数放在这里,但我认为这违背了auto 在x 的声明中的目的!那么如何在不显式编写类型的情况下使用x 的类型作为模板参数(这样在类型更改时,我的代码仍然有效)。
【问题讨论】:
-
改用
decltype() -
@DimChtz
decltype有效。谢谢。 -
@Cornstalks 我不知道
typeof是 GCC 特定的。 -
@becko 是的,但
decltype是一个 c++ 11 功能