如何解决统一初始化和初始化列表之间的 C++11 歧义
我发现以不同方式解释 {}
-list 的情况可能会导致细微的错误。例如在这个程序 (g++ 10.2.1) 中:
#include <vector>
#include <iostream>
struct A {
int n1;
int n2;
//A(int _n1 = 0,int _n2 = 0): n1(_n1),n2(_n2) {}
};
int main() {
std::vector<A> v;
v.push_back({1,2});
std::cout << v.size() << std::endl;
v.insert(v.end(),{3,4});
std::cout << v.size() << std::endl;
}
在 A
中没有构造函数时,insert
添加了一个元素。定义构造函数,insert
添加两个元素,为每个数字构建一个 A
对象。这是因为 insert
(与 push_back
不同)对单个对象或初始值设定项列表具有不同的重载。当然,如果您明确写出 A{3,4}
,则情况并非如此。
我的问题:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。