diff options
Diffstat (limited to 'test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7-1y.cpp')
-rw-r--r-- | test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7-1y.cpp | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7-1y.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7-1y.cpp deleted file mode 100644 index f7b3e8e7be..0000000000 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7-1y.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// RUN: %clang_cc1 -verify -std=c++1y %s - -namespace std { - template<typename T> struct initializer_list { - const T *p; - unsigned long n; - initializer_list(const T *p, unsigned long n); - }; -} - -int i; -int &&f(); - -using Int = int; -using IntLRef = int&; -using IntRRef = int&&; -using InitListInt = std::initializer_list<int>; -using IntPtr = int*; - -auto x3a = i; -decltype(auto) x3d = i; -using Int = decltype(x3a); -using Int = decltype(x3d); - -auto x4a = (i); -decltype(auto) x4d = (i); -using Int = decltype(x4a); -using IntLRef = decltype(x4d); - -auto x5a = f(); -decltype(auto) x5d = f(); -using Int = decltype(x5a); -using IntRRef = decltype(x5d); - -auto x6a = { 1, 2 }; -decltype(auto) x6d = { 1, 2 }; // expected-error {{cannot deduce 'decltype(auto)' from initializer list}} -using InitListInt = decltype(x6a); - -auto *x7a = &i; -decltype(auto) *x7d = &i; // expected-error {{cannot form pointer to 'decltype(auto)'}} -using IntPtr = decltype(x7a); - -struct S {}; - -decltype(auto) f1(); -decltype(auto) (*f2)(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}} expected-error {{requires an initializer}} -decltype(auto) *f3(); // expected-error {{cannot form pointer to 'decltype(auto)'}} -const decltype(auto) f4(); // expected-error {{'decltype(auto)' cannot be combined with other type specifiers}} -typedef decltype(auto) f5(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}} -decltype(auto) ((((((f6))))())); // ok -decltype(auto) f7()(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}} expected-error {{function cannot return function type}} -decltype(auto) (S::*f8)(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}} expected-error {{requires an initializer}} -decltype(auto) &f9(); // expected-error {{cannot form reference to 'decltype(auto)'}} -decltype(auto) (&f10())[10]; // expected-error {{cannot form array of 'decltype(auto)'}} - -decltype(auto) ((((((v1)))))) = 0; // ok -decltype(auto) v2[1] = { 0 }; // expected-error {{cannot form array of 'decltype(auto)'}} -decltype(auto) &v3 = { 0 }; // expected-error {{cannot form reference to 'decltype(auto)'}} -decltype(auto) *v4 = { 0 }; // expected-error {{cannot form pointer to 'decltype(auto)'}} - -auto multi1a = 0, &multi1b = multi1a; -auto multi1c = multi1a, multi1d = multi1b; -decltype(auto) multi1e = multi1a, multi1f = multi1b; // expected-error {{'decltype(auto)' deduced as 'int' in declaration of 'multi1e' and deduced as 'int &' in declaration of 'multi1f'}} - -auto f1a() { return 0; } -decltype(auto) f1d() { return 0; } -using Int = decltype(f1a()); -using Int = decltype(f1d()); - -auto f2a(int n) { return n; } -decltype(auto) f2d(int n) { return n; } -using Int = decltype(f2a(0)); -using Int = decltype(f2d(0)); - -auto f3a(int n) { return (n); } -decltype(auto) f3d(int n) { return (n); } // expected-warning {{reference to stack memory}} -using Int = decltype(f3a(0)); -using IntLRef = decltype(f3d(0)); - -auto f4a(int n) { return f(); } -decltype(auto) f4d(int n) { return f(); } -using Int = decltype(f4a(0)); -using IntRRef = decltype(f4d(0)); - -auto f5aa(int n) { auto x = f(); return x; } -auto f5ad(int n) { decltype(auto) x = f(); return x; } -decltype(auto) f5da(int n) { auto x = f(); return x; } -decltype(auto) f5dd(int n) { decltype(auto) x = f(); return x; } // expected-error {{rvalue reference to type 'int' cannot bind to lvalue}} -using Int = decltype(f5aa(0)); -using Int = decltype(f5ad(0)); -using Int = decltype(f5da(0)); - -auto init_list_1() { return { 1, 2, 3 }; } // expected-error {{cannot deduce return type from initializer list}} -decltype(auto) init_list_2() { return { 1, 2, 3 }; } // expected-error {{cannot deduce return type from initializer list}} |