Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -std=c++11 %s -verify
      2 
      3 // expected-no-diagnostics
      4 
      5 namespace PR15757 {
      6   struct S {
      7   };
      8 
      9   template<typename X, typename Y> struct T {
     10     template<typename A> T(X x, A &&a) {}
     11 
     12     template<typename A> explicit T(A &&a)
     13         noexcept(noexcept(T(X(), static_cast<A &&>(a))))
     14       : T(X(), static_cast<A &&>(a)) {}
     15   };
     16 
     17   template<typename X, typename Y> struct U : T<X, Y> {
     18     using T<X, Y>::T;
     19   };
     20 
     21   U<S, char> foo(char ch) { return U<S, char>(ch); }
     22 
     23   int main() {
     24     U<S, int> a(42);
     25     U<S, char> b('4');
     26     return 0;
     27   }
     28 }
     29 
     30 namespace WrongIdent {
     31   struct A {};
     32   struct B : A {};
     33   struct C : B {
     34     using B::A;
     35   };
     36 }
     37