[diff.cpp14.class] # Annex C (informative) Compatibility [[diff]](./#diff) ## C.4 C++ and ISO C++ 2014 [[diff.cpp14]](diff.cpp14#class) ### C.4.5 [[class]](class "11 Classes"): classes [diff.cpp14.class] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L1735) **Affected subclause:** [[class.inhctor.init]](class.inhctor.init) **Change:** Inheriting a constructor no longer injects a constructor into the derived class[.](#1.sentence-1) **Rationale:** Better interaction with other language features[.](#1.sentence-2) **Effect on original feature:** Valid C++ 2014 code that uses inheriting constructors may not be valid or may have different semantics[.](#1.sentence-3) A [*using-declaration*](namespace.udecl#nt:using-declaration "9.10 The using declaration [namespace.udecl]") that names a constructor now makes the corresponding base class constructors visible to initializations of the derived class rather than declaring additional derived class constructors[.](#1.sentence-4) [*Example [1](#example-1)*: struct A {template A(T, typename T::type = 0); A(int);};struct B : A {using A::A; B(int);}; B b(42L); // now calls B(int), used to call B(long),// which called A(int) due to substitution failure// in A(long). — *end example*]