From: Inconnu on
According to the latest draft, there is no difference between direct-
list-initialization and copy-list-initialization in the process of
overload resolution. Besides, if there is an initializer-list-
constructor in the class, the braced-init-list is considered a single
argument and all constructors are candidates for overload resolution.
This enables the following example to be correct. Am I right?

#include <initializer_list>

struct Z {}; // dummy class

struct A
A (std::initializer_list<int>);

struct B
B (std::initializer_list<Z>); // adding such constr. to every
// it is never viable
B (A);

struct C
C (std::initializer_list<Z>);
C (B);

struct B
D (std::initializer_list<Z>);
D (C);

D d {1, 2, 3};

[ See for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]