1
1
第一个重载显然不能用于仅移动类型。但是,第二个重载虽然在C++11中可用,但在这里不适用于大括号,因为大括号不会进行模板参数推导(至少在C++11中,不确定是否有更高的标准)。
第一次和第二次呼叫
C++17添加了另一个重载,该重载可用于大括号和仅移动类型。至于为什么它能与某些编译器协同工作而不能与其他编译器协同工作,这很可能是由于C++17支持级别或编译器标志的不同。
更新:只是让它痛苦地显而易见:对于使用大括号,我的意思是只使用大括号(聚合初始化或隐式构造函数调用),即。
|
2
0
我已经用g++7.3测试了你的代码,它编译时没有错误! 使用clang++5.0.1时,它不会编译。 我认为您使用的是c++20的一项功能,因此尚未在所有编译器上提供支持。 |
Bob · BFS用映射C替换数组++ 6 年前 |
aghast · 如何在std::map中放置POD结构? 6 年前 |
killer · 地图声明未编译[重复] 7 年前 |
ksl · 在类声明中初始化常量成员变量时,调试模式中出现异常 7 年前 |
Ahmed Atteya · C++std::map在未找到键时添加值 7 年前 |
Leo Lai · std::map中的基元类型值是否已初始化? 8 年前 |
user6421810 · C++映射未正确插入 8 年前 |
user3794186 · C++std::map保存任意类型的值 10 年前 |