Re: Problem with braced-init-lists and explicit ctors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 2 Feb 2014, Joaquin M Lopez Munoz wrote:

Using GCC 4.8 -std=c++11. The following overload resolution is not
ambiguous as bar::bar is explicit, which is fine:

struct foo
{
 foo(int){}
};

struct bar
{
 explicit bar(int){}
};

void f(foo){}
void f(bar){}

int main()
{
 f(0);
}

But if I change the call statement to

int main()
{
 f({0});
}

then I get

main.cpp:16:8: error: call of overloaded 'f(<brace-enclosed initializer
list>)' is ambiguous
  f({0});
       ^
main.cpp:16:8: note: candidates are:
main.cpp:11:6: note: void f(foo)
void f(foo){}
     ^
main.cpp:12:6: note: void f(bar)
void f(bar){}
     ^

Is this a bug or am I missing some subtlety in the standard? Thank you,

If there is a subtlety, clang and intel are missing it since they accept the code. Please file this in bugzilla.

--
Marc Glisse




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux