29 lines
561 B
C++
29 lines
561 B
C++
|
// 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;
|
||
|
}
|
||
|
}
|