aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/cxx11-inheriting-ctors.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2013-06-10 20:45:12 +0000
committerDimitry Andric <dim@FreeBSD.org>2013-06-10 20:45:12 +0000
commit6a0372513edbc473b538d2f724efac50405d6fef (patch)
tree8f7776b7310bebaf415ac5b69e46e9f928c37144 /test/SemaCXX/cxx11-inheriting-ctors.cpp
parent809500fc2c13c8173a16b052304d983864e4a1e1 (diff)
Vendor import of clang tags/RELEASE_33/final r183502 (effectively, 3.3vendor/clang/clang-release_33-r183502
Notes
Notes: svn path=/vendor/clang/dist/; revision=251609 svn path=/vendor/clang/clang-release_33-r183502/; revision=251610; tag=vendor/clang/clang-release_33-r183502
Diffstat (limited to 'test/SemaCXX/cxx11-inheriting-ctors.cpp')
-rw-r--r--test/SemaCXX/cxx11-inheriting-ctors.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/SemaCXX/cxx11-inheriting-ctors.cpp b/test/SemaCXX/cxx11-inheriting-ctors.cpp
new file mode 100644
index 000000000000..67d55213a084
--- /dev/null
+++ b/test/SemaCXX/cxx11-inheriting-ctors.cpp
@@ -0,0 +1,28 @@
+// 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;
+ }
+}