我有一个变量x
,声明如下:
auto x = f(y);
在此处,f
代表一个函数,y
代表一个变量,它们都是在其他地方定义的。现在,我想声明一个包含x
类型元素的std::vector
,所以我写了以下代码:
std::vector<typeof(x)> v;
这会导致编译器错误。一种解决方案是在这里放置
x
的显式参数,但我认为这样做会破坏x
声明中auto
的意义!那么,如何在不显式编写类型的情况下将x
的类型用作模板参数(以便在类型更改时,我的代码仍然有效)?
decltype()
。 - DimChtzdecltype
?或者你确实在使用GCC及其typeof
?另外,你能否发布完整的编译器错误信息? - Cornstalksdecltype
起作用了。谢谢。 - a06etypeof
是GCC特有的。 - a06edecltype
是 C++ 11 的特性。 - DimChtz