假设我有一个这样的向量:
std::vector<int> vec;
然后我想知道vec
's 元素的类型。我怎么才能得到它?结果太糟糕decltype(vec[0])
了int&
。
这是你要找的吗?
std::vector<int>::value_type
你也可以使用
std::remove_reference<decltype(vec[0])>::type
摆脱参考。
另一种选择是使用decltype(vec)::value_type
. 但是,由于编译器错误,这目前不适用于 Visual Studio。该编译器的解决方法是创建一个中间typedef
.
typedef decltype(vec) vec_type;
vec_type::value_type foo;
对于任何容器类型的对象 , c
,包括数组和所有标准库容器,例如std::vector
和std::list
:
typename std::remove_reference<decltype(*std::begin(c))>::type