On 12/27/2014 11:49 AM, Momchil Velikov wrote:
struct C { C(const C &); };struct X { operator C() const; }; C a{X()}; The variable "a" is initialised by direct list-initialization according to 8.5.4. [dcl.init.list] #3 and 13.3.1.7 [over.match.list]. As the class C does not have an initializer-list ctor, all the constructors of C are tried with the elements of the initializer list as arguments.
As I commented on the PR, the current G++ behavior is correct under the resolution of DR 1467.
Jason