]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / array / tuple_interface / tuple_element.cc
index dda293d93ec8b6109ae52be0d201ad0053e21f62..8e67d8637241cff14f3b176a02e2941c8ec18b1f 100644 (file)
@@ -1,6 +1,6 @@
-// { dg-options "-std=gnu++11" }
+// { dg-do compile { target c++11 } }
 //
-// Copyright (C) 2011-2015 Free Software Foundation, Inc.
+// Copyright (C) 2011-2023 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// NB: Don't include any other headers in this file.
+// LWG 2212 requires <array> to define tuple_element<cv T> specializations.
 #include <array>
-#include <type_traits>
-#include <testsuite_hooks.h>
 
 void
 test01() 
-{ 
-  bool test __attribute__((unused)) = true;
-  using namespace std;
+{
+  using std::array;
+  using std::tuple_element;
+  // This relies on the fact that <utility> includes <type_traits>:
+  using std::is_same;
 
-  const size_t len = 3;
+  const std::size_t len = 3;
   typedef array<int, len> array_type;
-  VERIFY( (is_same<tuple_element<0, array_type>::type, int>::value == true) );
-  VERIFY( (is_same<tuple_element<1, array_type>::type, int>::value == true) );
-  VERIFY( (is_same<tuple_element<2, array_type>::type, int>::value == true) );
+
+  static_assert(is_same<tuple_element<0, array_type>::type, int>::value, "" );
+  static_assert(is_same<tuple_element<1, array_type>::type, int>::value, "" );
+  static_assert(is_same<tuple_element<2, array_type>::type, int>::value, "");
+
+  static_assert(is_same<tuple_element<0, const array_type>::type,
+                const int>::value, "");
+  static_assert(is_same<tuple_element<1, const array_type>::type,
+                const int>::value, "");
+  static_assert(is_same<tuple_element<2, const array_type>::type,
+                const int>::value, "");
+
+  static_assert(is_same<tuple_element<0, volatile array_type>::type,
+                volatile int>::value, "");
+  static_assert(is_same<tuple_element<1, volatile array_type>::type,
+                volatile int>::value, "");
+  static_assert( (is_same<tuple_element<2, volatile array_type>::type,
+           volatile int>::value == true), "" );
+
+  static_assert(is_same<tuple_element<0, const volatile array_type>::type,
+                const volatile int>::value, "");
+  static_assert(is_same<tuple_element<1, const volatile array_type>::type,
+                const volatile int>::value, "");
+  static_assert(is_same<tuple_element<2, const volatile array_type>::type,
+                const volatile int>::value, "");
 }
 
 int main()