typeof(x) 作为模板参数?

typeof(x) as a template argument?

我有一个变量 x,声明为:

auto x = f(y);

其中 f 是一个函数,y 是一个变量,它们都在别处定义。现在我想声明一个 std::vector 持有 x 类型的元素,所以我写:

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

这会导致编译器错误。一个解决方案是把 x 的显式参数放在这里,但我认为这违背了 x 声明中 auto 的目的!那么如何在不显式写入类型的情况下使用 x 的类型作为模板参数(以便在类型更改时,我的代码仍然有效)。

只有 GNU 编译器有 typeof。相反,使用 decltype 这是一个 c++ 11 特性。