Why does using uniform initializer syntax result in different behavior to the “old” style ()?
问题 I get different results if I try to use a uniform initializer for std::set . Example: int main() { std::array a {1,2,3,4}; std::set<int> s1 {a.begin(), a.end()}; std::set s2 {a.begin(), a.end()}; std::set s3 (a.begin(), a.end()); for(auto& i: s1) { std::cout << i << "\n"; } std::cout << "####" << std::endl; for(auto& i: s2) { std::cout << i << "\n"; } std::cout << "####" << std::endl; for(auto& i: s3) { std::cout << i << "\n"; } } Results in: 1 2 3 4 #### 0x7ffecf9d12e0 0x7ffecf9d12f0 #### 1