相关疑难解决方法(0)

如何通过decltype声明迭代器的值

在C++ 98中,我通常使用以下命令在迭代器的值类型中声明一个变量:

typename std::iterator_traits<Iterator>::value_type value;
Run Code Online (Sandbox Code Playgroud)

在C++ 11中我们有decltype并且我认为推导值类型的最简单方法是:

decltype(*iterator) value;
Run Code Online (Sandbox Code Playgroud)

不幸的是,对于大多数迭代器,*iterator的类型是value_type&而不是value_type.任何想法,没有类型修改类,如何按摩上面产生value_type(而不是任何参考)?


我不认为这个问题是不合理的,因为以下内容相当稳健但最终会创建另一个变量.

auto x = *iterator;
decltype(x) value;
Run Code Online (Sandbox Code Playgroud)

另请注意,我真的想要推导出的类型,而不仅仅是一个实例,例如,如果我想声明这些值的std :: vector.

c++ iterator decltype type-traits c++11

8
推荐指数
1
解决办法
3188
查看次数

标签 统计

c++ ×1

c++11 ×1

decltype ×1

iterator ×1

type-traits ×1