从引用的容器C ++获取value_type的优雅方法

问题描述 投票:0回答:1

我想从引用的容器(例如std::string& str)中获取value_type

我能够这样做的唯一方法是首先剥离引用,然后通过这种方式访问​​基础类型:

std::unordered_set<std::remove_reference_t<decltype(str)>::value_type>

如果我使用的是C ++ 11,那会更糟:

std::unordered_set<std::remove_reference<decltype(str)>::type::value_type>

我发现它太冗长而且不太干净。

STL中是否有任何模板以更简洁的方式进行这种操作?

c++ templates stl
1个回答
0
投票

C ++ 20添加了iterator trait aliases,可让您结合std::begin及其兄弟姐妹来执行此操作。

以下名称可以从任何开始的迭代器value_type命名为c,包括传统的内置数组:

std::itr_value_t<decltype(std::begin( c ))>;
© www.soinside.com 2019 - 2024. All rights reserved.