在其他容器中,只有一个value_type,这正是模板参数。但是为什么std::span的value_type是remove_cv_t的类型,并定义了另一个名为element_type的类型,据我所知,它只在unique_ptr,shared_ptr中使用。这样做的目的是什么?
value_type
std::span
element_type
unique_ptr,shared_ptr
2ic8powd1#
最近我自己也注意到了这一点,所以不能添加任何解释,但是FWIW,作为一种解决方案,我使用这个特性来可靠地获得任何范围的value_type:
template<typename range_t> using range_value_t = std::remove_reference_t<decltype(*std::begin(std::declval<range_t&>()))>;
1条答案
按热度按时间2ic8powd1#
最近我自己也注意到了这一点,所以不能添加任何解释,但是FWIW,作为一种解决方案,我使用这个特性来可靠地获得任何范围的
value_type
: