Ant*_*cus 12 c++ stl move c++11 c++17
我看到insert的方法std::map,并std::unordered_map打算从改变
template<class P> std::pair<iterator,bool> insert(P&& value); (C++11)
Run Code Online (Sandbox Code Playgroud)
至
std::pair<iterator,bool> insert(value_type&& value); (C++17)
Run Code Online (Sandbox Code Playgroud)
但是,对于这些容器,value_type是std::pair<A const, int>.这里有两个问题:
Pis 的约束default_constructible<value_type, P&&>),然后std::pair<A, int>- 这是大多数时候这个参数的类型,因为它是返回的std::make_pair- 并且可以调用它的移动构造函数A.但是在C++ 17版本中,这个参数被转换为value_type,其中A是const,然后是不可移动的.如果我没有忽略某些东西,则必须复制.或者C++ 17也改变了这方面的任何东西?谢谢!
insert在C++ 17中添加了额外的非模板重载.
这种过载的优点是它允许基于.insert( { {key}, {value, args} } )语法{}的构造. template如果没有{}显式类型,则无法基于构造指令传递参数.
| 归档时间: |
|
| 查看次数: |
836 次 |
| 最近记录: |