diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-12-04 13:22:31 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-12-04 13:22:31 +0000 |
commit | 7b48bf2011b4020c4a5a2d5d4149b03983f72cc2 (patch) | |
tree | b07a064ee6bddbe6ddf73a98a9c131b5ab6a0f5f /gcc/testsuite/g++.dg/cpp0x | |
parent | 8cd167a5ad8baf4988e07fcbc9c9cc338c02d3d1 (diff) | |
download | gcc-tarball-7b48bf2011b4020c4a5a2d5d4149b03983f72cc2.tar.gz |
gcc-5.3.0gcc-5.3.0
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C | 24 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/alignas1.C | 16 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/alignas2.C | 20 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/anon-union1.C | 27 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C | 29 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/local-type1.C | 19 |
7 files changed, 141 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C new file mode 100644 index 0000000000..2734075390 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C @@ -0,0 +1,24 @@ +// PR c++/67021 +// { dg-do compile { target c++11 } } + +template<typename> struct Dummy; +template<> struct Dummy<int> {}; + +template <class...> +struct all_same { static constexpr bool value = true; }; +template <class T, class...Rest> +struct all_same<T, T, Rest...> : all_same<T, Rest...> {}; +template <class T, class U, class...Rest> +struct all_same<T, U, Rest...> { static constexpr bool value = false; }; + +template <class R> +using ValueType = int; + +template <class I> +constexpr bool A(I i) { + return all_same<ValueType<I>, ValueType<decltype(i++)>>::value; +} + +int main() { + static_assert(A(42), ""); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/alignas1.C b/gcc/testsuite/g++.dg/cpp0x/alignas1.C new file mode 100644 index 0000000000..d73c875d63 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alignas1.C @@ -0,0 +1,16 @@ +// PR c++/65734 +// { dg-do compile { target c++11 } } + +template <class T> struct A +{ + T t; +}; + +typedef A<int> T[4] alignas (2 * alignof (int)); +A<int> a[4]; + +typedef A<char> T2[4] alignas (2 * alignof (int)); + +#define SA(X) static_assert((X),#X) +SA(alignof (T) == 2 * alignof(int)); +SA(alignof (T2) == 2 * alignof(int)); diff --git a/gcc/testsuite/g++.dg/cpp0x/alignas2.C b/gcc/testsuite/g++.dg/cpp0x/alignas2.C new file mode 100644 index 0000000000..2e7d051c88 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alignas2.C @@ -0,0 +1,20 @@ +// PR c++/65734 +// { dg-do compile { target c++11 } } + +template <typename T> +struct BVector +{ + T t; +}; +BVector<int> m; + +template <template <class> class T> +struct BV2 +{ + typedef T<float> value_type alignas (16); + value_type v; +}; +BV2<BVector> m2; + +#define SA(X) static_assert((X),#X) +SA(alignof (BV2<BVector>::value_type) == 16); diff --git a/gcc/testsuite/g++.dg/cpp0x/anon-union1.C b/gcc/testsuite/g++.dg/cpp0x/anon-union1.C new file mode 100644 index 0000000000..19f6291211 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/anon-union1.C @@ -0,0 +1,27 @@ +// PR c++/66583 +// { dg-do run { target c++11 } } + +template <class T> +T&& move(T& t) { return static_cast<T&&>(t); } + +struct A { + A() { }; + A(const A&) { } +}; + +struct B { + union { + int m_1 = 0; + int m_2; + }; + A dummy; +}; + +int main() +{ + B b; + b.m_1 = 1; + B c = move(b); + if (c.m_1 != 1) + __builtin_abort(); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C new file mode 100644 index 0000000000..e2a6e865e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C @@ -0,0 +1,6 @@ +// PR c++/68087 +// { dg-do compile { target c++11 } } + +constexpr char c[] = "hello"; +constexpr const char *p = c; +constexpr char ch = *(p-1); // { dg-error "array subscript" } diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C new file mode 100644 index 0000000000..3ebdf3b36a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C @@ -0,0 +1,29 @@ +// PR c++/67244 +// { dg-do compile { target c++11 } } + +class A { +public: + int operator*(); +}; +template <typename T, typename Predicate> +void searchGen(int, int, T, Predicate p4) { + p4(0); +} +template <typename...> struct B; +template <typename MetaFunction, typename Type, typename... Types> +struct B<MetaFunction, Type, Types...> { + static void exec() { MetaFunction::template exec<Type>; } +}; +template <typename MetaFunction, typename... Types> void forEachType() { + B<MetaFunction, Types...>::exec; +} +namespace { +struct C { + template <typename T> void exec() { + A __trans_tmp_1; + const auto target = *__trans_tmp_1; + searchGen(0, 0, 0, [=](T) { [=] { target; }; }); + } +}; +} +void ____C_A_T_C_H____T_E_S_T____75() { forEachType<C, int>; } diff --git a/gcc/testsuite/g++.dg/cpp0x/local-type1.C b/gcc/testsuite/g++.dg/cpp0x/local-type1.C new file mode 100644 index 0000000000..73bfd16738 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/local-type1.C @@ -0,0 +1,19 @@ +// PR c++/51048 +// { dg-do compile { target c++11 } } + +template<typename X> +struct A { + virtual void DoPush(X const& x) = 0; + void Push(X const& x) { DoPush(x); } +}; + +template<typename X> +struct B : A<X> { + using A<X>::Push; + virtual void DoPush(X const&) { } +}; + +int main() { + enum S { }; + B<S>().Push(S()); +} |