c++ - l 值如何传递给 std::make_pair
问题描述
在std::make_pair
C++14 以后只有一种实现
模板< class T1, class T2 > constexpr std::pair<V1,V2> make_pair( T1&& t, T2&& u );
这两个参数都是 R 值参考,根据这个
R 值引用不能用 l 值初始化。
int i = 1;
char ch = 'a';
std::unordered_map<int, char> mp;
mp.insert(make_pair<int,char>(i, ch));
因此,当我尝试在上面的代码中使用 make_pair 时,它会正确抛出错误error: cannot bind rvalue reference of type 'int&&' to lvalue of type 'int'
。
但是,如果我更改删除模板参数并将其调用为
mp.insert(make_pair(i, ch));
我很困惑这是如何工作的,i
并且ch
两者都是 L 值。模板参数解析是否将 L 值转换为 R 值,或者它是如何工作的?
解决方案
推荐阅读
- java - 如何比较两个哈希图/哈希表以仅找到唯一键
- python-3.x - 设备的序列号是否唯一?
- generics - Nim 中的 any 类型的混淆问题
- c# - 单元测试起订量通用类型
- java - 在我的程序中使用 break 语句使用 switch 语句计算闰年的问题
- c++ - CMake:使用 target_sources() 添加当前目录和子目录中的所有文件
- ios - 如何使用 MVC 范例 SWIFT 设置 UITableView
- c# - 转换日期时间?串起来
- heroku - 在免费计划中使用 Heroku
- java - Is there any component available in Camel to run standalone route?