Bring inheriting constructor implementation up-to-date with current defect
reports, and implement implicit definition of inheriting constructors.
Remaining missing features: inheriting constructor templates, implicit
exception specifications for inheriting constructors, inheriting constructors
from dependent bases.

llvm-svn: 177320
diff --git a/clang/test/CXX/special/class.inhctor/p3.cpp b/clang/test/CXX/special/class.inhctor/p3.cpp
index d7093fb..f71ab16 100644
--- a/clang/test/CXX/special/class.inhctor/p3.cpp
+++ b/clang/test/CXX/special/class.inhctor/p3.cpp
@@ -5,7 +5,7 @@
   B1(int, int);
 };
 struct D1 : B1 {
-  using B1::B1; // expected-error {{not supported}}
+  using B1::B1;
 };
 D1 d1a(1), d1b(1, 1);
 
@@ -15,7 +15,7 @@
   explicit B2(int, int = 0, int = 0);
 };
 struct D2 : B2 { // expected-note 2 {{candidate constructor}}
-  using B2::B2; // expected-error {{not supported}}
+  using B2::B2;
 };
 D2 d2a(1), d2b(1, 1), d2c(1, 1, 1);
 
@@ -25,18 +25,18 @@
   B3(void*); // expected-note {{inherited from here}}
 };
 struct D3 : B3 { // expected-note 2 {{candidate constructor}}
-  using B3::B3; // expected-note {{candidate constructor (inherited)}} expected-error {{not supported}}
+  using B3::B3; // expected-note {{candidate constructor (inherited)}}
 };
 D3 fd3() { return 1; } // expected-error {{no viable conversion}}
 
 template<typename T> struct T1 : B1 {
-  using B1::B1; // expected-error {{not supported}}
+  using B1::B1;
 };
 template<typename T> struct T2 : T1<T> {
-  using T1<int>::T1; // expected-error {{not supported}}
+  using T1<int>::T1;
 };
 template<typename T> struct T3 : T1<int> {
-  using T1<T>::T1; // expected-error {{not supported}}
+  using T1<T>::T1;
 };
 struct U {
   friend T1<int>::T1(int);