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