http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54521
Bug #: 54521 Summary: g++ fails to call explicit constructors in the second step of copy initialization Classification: Unclassified Product: gcc Version: 4.7.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: ts...@mail.ru g++ fails to compile the following code struct X { X(int) {} explicit X(X const &) {} }; int main() { X x = 1; // error: no matching function for call to 'X::X(X)' } The second step of a copy initialization (see 8.5/16/6/2) is a direct-initialization where explicit constructors shall be considered as candidate functions.