|
2419 | 2419 | \begin{codeblock}
|
2420 | 2420 | void f(std::initializer_list<int>);
|
2421 | 2421 | f( {} ); // OK, \tcode{f(initializer_list<int>)} identity conversion
|
2422 |
| -f( {1,2,3} ); // OK, \tcode{f(initializer_list<int>)} identity conversion |
2423 |
| -f( {'a','b'} ); // OK, \tcode{f(initializer_list<int>)} integral promotion |
| 2422 | +f( {1, 2, 3} ); // OK, \tcode{f(initializer_list<int>)} identity conversion |
| 2423 | +f( {'a', 'b'} ); // OK, \tcode{f(initializer_list<int>)} integral promotion |
2424 | 2424 | f( {1.0} ); // error: narrowing
|
2425 | 2425 |
|
2426 | 2426 | struct A {
|
2427 | 2427 | A(std::initializer_list<double>); // \#1
|
2428 | 2428 | A(std::initializer_list<complex<double>>); // \#2
|
2429 |
| - A(std::initializer_list<std::string>); // \#3 |
| 2429 | + A(std::initializer_list<A>); // \#3 |
| 2430 | + A(std::initializer_list<std::string>); // \#4 |
2430 | 2431 | };
|
2431 |
| -A a{ 1.0,2.0 }; // OK, uses \#1 |
| 2432 | +A a{ 1.0, 2.0 }; // OK, uses \#1, not \#2 |
| 2433 | +A b{ a }; // OK, uses \#3, not the implicitly-defined copy constructor |
2432 | 2434 |
|
2433 | 2435 | void g(A);
|
2434 |
| -g({ "foo", "bar" }); // OK, uses \#3 |
| 2436 | +g({ "foo", "bar" }); // OK, uses \#4 |
2435 | 2437 |
|
2436 | 2438 | typedef int IA[3];
|
2437 | 2439 | void h(const IA&);
|
|
0 commit comments