Consider: struct A { A(int); A() = delete; }; struct B { B(int); B() = delete; }; struct C : B { using B::B; A a = 0; } c(0); GCC rejects this valid code: <stdin>:1:114: error: use of deleted function ‘C::C(int)’ <stdin>:1:97: note: ‘C::C(int)’ is implicitly deleted because the default definition would be ill-formed: <stdin>:1:97: error: use of deleted function ‘A::A()’ <stdin>:1:20: note: declared here However, if you remove the '= delete' from A, GCC does in fact call A::A(int), so this seems to be limited to determining if the inheriting constructor should be deleted.
Google ref: b/17333074
Fixed in GCC 7.2.0 and 8+.