| // RUN: %clang_cc1 -std=c++11 %s -verify | |
| // expected-no-diagnostics | |
| namespace PR15757 { | |
| struct S { | |
| }; | |
| template<typename X, typename Y> struct T { | |
| template<typename A> T(X x, A &&a) {} | |
| template<typename A> explicit T(A &&a) | |
| noexcept(noexcept(T(X(), static_cast<A &&>(a)))) | |
| : T(X(), static_cast<A &&>(a)) {} | |
| }; | |
| template<typename X, typename Y> struct U : T<X, Y> { | |
| using T<X, Y>::T; | |
| }; | |
| U<S, char> foo(char ch) { return U<S, char>(ch); } | |
| int main() { | |
| U<S, int> a(42); | |
| U<S, char> b('4'); | |
| return 0; | |
| } | |
| } |