http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58408
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- If you make it constexpr, which requires you to initialize the member, then it works: class Test { public: constexpr Test() = default; Test(char *b) { } int i = 0; }; Clang accepts both that and your original.