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 特性。
我有一个变量 x
,声明为:
auto x = f(y);
其中 f
是一个函数,y
是一个变量,它们都在别处定义。现在我想声明一个 std::vector
持有 x
类型的元素,所以我写:
std::vector<typeof(x)> v;
这会导致编译器错误。一个解决方案是把 x
的显式参数放在这里,但我认为这违背了 x
声明中 auto
的目的!那么如何在不显式写入类型的情况下使用 x
的类型作为模板参数(以便在类型更改时,我的代码仍然有效)。
只有 GNU 编译器有 typeof
。相反,使用 decltype
这是一个 c++ 11 特性。