typeof(x)作为模板参数?

时间:2016-03-24 12:24:55

标签: c++ templates auto

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

auto x = f(y);

其中f是一个函数,y是一个变量,两者都定义在其他地方。现在我想声明一个std::vector类型为x的{​​{1}}元素,所以我写道:

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

这会导致编译器错误。一个解决方案是在这里放置x的明确论点,但我认为这在auto的声明中违背了x的目的!那么我如何使用x的类型作为模板参数,而无需显式写入类型(因此在类型更改中,我的代码仍然有效)。

1 个答案:

答案 0 :(得分:7)

只有GNU编译器具有typeof。相反,请使用decltype这是一个c ++ 11功能。