我有一个变量x
,声明为:
auto x = f(y);
其中f
是一个函数,y
是一个变量,两者都定义在其他地方。现在我想声明一个std::vector
类型为x
的{{1}}元素,所以我写道:
std::vector<typeof(x)> v;
这会导致编译器错误。一个解决方案是在这里放置x
的明确论点,但我认为这在auto
的声明中违背了x
的目的!那么我如何使用x
的类型作为模板参数,而无需显式写入类型(因此在类型更改中,我的代码仍然有效)。
答案 0 :(得分:7)
只有GNU编译器具有typeof
。相反,请使用decltype
这是一个c ++ 11功能。