你知道吗? 总所周知现代 C++ 推荐使用 { } 初始化,这通常没有问题,可以调用任意构造函数。但在类型支持初始化列表构造时就很容易出错,若再加上隐式转换就会出现非常复杂的问题。 各种可能性 假设你有一个类型 std::vector<T> ,T 具有整型的构造函数(允许隐式转换),此时: std::vector<T>( 2 ) ; 将调用vector 的扩容函数 std::vector<T>{ 2 } ? std::vector<T>({ 2 }) ; 将调用vector 的扩容函数(即使你已经显式使用 {} 包裹) std::vector<T>{{ 2 }} 调用初始化列表,构造单元素数组 std::vector<T>{ { } } ? 评论 0