]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/testsuite/20_util/is_convertible/value.cc
Update copyright years in libstdc++-v3/
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 20_util / is_convertible / value.cc
index 6ec22d024a9c1e86caf0e264e660d94ab403cd6d..cea9ea4b80cce25bba06b18037296dc8f144e328 100644 (file)
@@ -1,8 +1,9 @@
-// { dg-options "-std=gnu++0x" }
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
 
 // 2009-10-29  Paolo Carlini  <paolo.carlini@oracle.com>
 //
-// Copyright (C) 2009 Free Software Foundation, Inc.
+// Copyright (C) 2009-2014 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
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_hooks.h>
 #include <testsuite_tr1.h>
 
 void test01()
 {
-  bool test __attribute__((unused)) = true;
   using std::is_convertible;
   using namespace __gnu_test;
 
   // Positive tests.
-  VERIFY( (test_relationship<is_convertible, int, int>(true)) );
-  VERIFY( (test_relationship<is_convertible, int, const int>(true)) );
-  VERIFY( (test_relationship<is_convertible, volatile int, const int>(true)) );
-  VERIFY( (test_relationship<is_convertible, int, float>(true)) );
-  VERIFY( (test_relationship<is_convertible, double, float>(true)) );
-  VERIFY( (test_relationship<is_convertible, float, int>(true)) );
-  VERIFY( (test_relationship<is_convertible, int*, const int*>(true)) );
-  VERIFY( (test_relationship<is_convertible, int*, void*>(true)) );
-  VERIFY( (test_relationship<is_convertible, int[4], int*>(true)) );
-  VERIFY( (test_relationship<is_convertible, float&, int>(true)) );
-  VERIFY( (test_relationship<is_convertible, int, const int&>(true)) ); 
-  VERIFY( (test_relationship<is_convertible, const int&, int>(true)) );
-  VERIFY( (test_relationship<is_convertible, float, const int&>(true)) );
-  VERIFY( (test_relationship<is_convertible, int(int), int(*)(int)>(true)) );
-  VERIFY( (test_relationship<is_convertible, int(&)(int), int(*)(int)>(true)) );
-  VERIFY( (test_relationship<is_convertible, EnumType, int>(true)) );
-  VERIFY( (test_relationship<is_convertible, ClassType, ClassType>(true)) );
-  VERIFY( (test_relationship<is_convertible, DerivedType, ClassType>(true)) );
-  VERIFY( (test_relationship<is_convertible, DerivedType*, ClassType*>(true)) );
-  VERIFY( (test_relationship<is_convertible, DerivedType&, ClassType&>(true)) );
+  static_assert(test_relationship<is_convertible, int, int>(true), "");
+  static_assert(test_relationship<is_convertible, int, const int>(true), "");
+  static_assert(test_relationship<is_convertible,
+               volatile int, const int>(true), "");
+  static_assert(test_relationship<is_convertible, int, float>(true), "");
+  static_assert(test_relationship<is_convertible, double, float>(true), "");
+  static_assert(test_relationship<is_convertible, float, int>(true), "");
+  static_assert(test_relationship<is_convertible, int*, const int*>(true), "");
+  static_assert(test_relationship<is_convertible, int*, void*>(true), "");
+  static_assert(test_relationship<is_convertible, int[4], int*>(true), "");
+  static_assert(test_relationship<is_convertible, float&, int>(true), "");
+  static_assert(test_relationship<is_convertible, int, const int&>(true), ""); 
+  static_assert(test_relationship<is_convertible, const int&, int>(true), "");
+  static_assert(test_relationship<is_convertible, float, const int&>(true), "");
+  static_assert(test_relationship<is_convertible, int(int),
+               int(*)(int)>(true), "");
+  static_assert(test_relationship<is_convertible,
+               int(&)(int), int(*)(int)>(true), "");
+  static_assert(test_relationship<is_convertible, EnumType, int>(true), "");
+  static_assert(test_relationship<is_convertible, ClassType,
+               ClassType>(true), "");
+  static_assert(test_relationship<is_convertible, DerivedType,
+               ClassType>(true), "");
+  static_assert(test_relationship<is_convertible, DerivedType*,
+               ClassType*>(true), "");
+  static_assert(test_relationship<is_convertible, DerivedType&,
+               ClassType&>(true), "");
 
-  VERIFY( (test_relationship<is_convertible, const int, const int&>(true)) );
+  static_assert(test_relationship<is_convertible, const int,
+               const int&>(true), "");
 
-  VERIFY( (test_relationship<is_convertible, void, void>(true)) );
-  VERIFY( (test_relationship<is_convertible, const void, void>(true)) );
-  VERIFY( (test_relationship<is_convertible, void, volatile void>(true)) );
+  static_assert(test_relationship<is_convertible, void, void>(true), "");
+  static_assert(test_relationship<is_convertible, const void, void>(true), "");
+  static_assert(test_relationship<is_convertible, void,
+               volatile void>(true), "");
+  static_assert(test_relationship<is_convertible, double&,
+               ExplicitClass>(true), "");
+
+  static_assert(test_relationship<is_convertible, int(int),
+               int(&)(int)>(true), "");
 
   // Negative tests.
-  VERIFY( (test_relationship<is_convertible, const int*, int*>(false)) );
-  VERIFY( (test_relationship<is_convertible, int*, float*>(false)) );
-  VERIFY( (test_relationship<is_convertible, const int[4], int*>(false)) );
-  VERIFY( (test_relationship<is_convertible, int[4], int[4]>(false)) );
-  VERIFY( (test_relationship<is_convertible, const int&, int&>(false)) );
-  VERIFY( (test_relationship<is_convertible, float&, int&>(false)) );
-  VERIFY( (test_relationship<is_convertible, float, volatile int&>(false)) );
-  VERIFY( (test_relationship<is_convertible, int(int), int(int)>(false)) );
-  VERIFY( (test_relationship<is_convertible, int(int), int(*)(void)>(false)) );
-  VERIFY( (test_relationship<is_convertible, int(*)(int),
-                                            int(&)(int)>(false)) );
-  VERIFY( (test_relationship<is_convertible, int, EnumType>(false)) );
-  VERIFY( (test_relationship<is_convertible, int, ClassType>(false)) );
-  VERIFY( (test_relationship<is_convertible, ClassType, DerivedType>(false)) );
-  VERIFY( (test_relationship<is_convertible, ClassType*,
-                                            DerivedType*>(false)) );
-  VERIFY( (test_relationship<is_convertible, ClassType&,
-                                            DerivedType&>(false)) );
+  static_assert(test_relationship<is_convertible, const int*, int*>(false), "");
+  static_assert(test_relationship<is_convertible, int*, float*>(false), "");
+  static_assert(test_relationship<is_convertible, const int[4],
+               int*>(false), "");
+  static_assert(test_relationship<is_convertible, int[4], int[4]>(false), "");
+  static_assert(test_relationship<is_convertible, const int&, int&>(false), "");
+  static_assert(test_relationship<is_convertible, float&, int&>(false), "");
+  static_assert(test_relationship<is_convertible, float,
+               volatile int&>(false), "");
+  static_assert(test_relationship<is_convertible, int(int),
+               int(int)>(false), "");
+  static_assert(test_relationship<is_convertible, int(int),
+               int(*)(void)>(false), "");
+  static_assert(test_relationship<is_convertible, int(*)(int),
+               int(&)(int)>(false), "");
+  static_assert(test_relationship<is_convertible, int, EnumType>(false), "");
+  static_assert(test_relationship<is_convertible, int, ClassType>(false), "");
+  static_assert(test_relationship<is_convertible, ClassType,
+               DerivedType>(false), "");
+  static_assert(test_relationship<is_convertible, ClassType*,
+               DerivedType*>(false), "");
+  static_assert(test_relationship<is_convertible, ClassType&,
+               DerivedType&>(false), "");
 
-  VERIFY( (test_relationship<is_convertible, void, int>(false)) );
-  VERIFY( (test_relationship<is_convertible, void, float>(false)) );  
-  VERIFY( (test_relationship<is_convertible, void, int(*)(int)>(false)) );
+  static_assert(test_relationship<is_convertible, void, int>(false), "");
+  static_assert(test_relationship<is_convertible, void, float>(false), "");  
+  static_assert(test_relationship<is_convertible, void,
+               int(*)(int)>(false), "");
 
   // C++0x
-  VERIFY( (test_relationship<is_convertible, int, void>(false)) );
-  VERIFY( (test_relationship<is_convertible, int[4], void>(false)) );
-
-  VERIFY( (test_relationship<is_convertible, int, int&>(false)) );
-  VERIFY( (test_relationship<is_convertible, float,
-                                            volatile float&>(false)) );
-  VERIFY( (test_relationship<is_convertible, const volatile int,
-                                            const volatile int&>(false)) );
-  VERIFY( (test_relationship<is_convertible, volatile int,
-                                            volatile int&>(false)) );
-  VERIFY( (test_relationship<is_convertible, int(int), int(&)(int)>(false)) );
-}
+  static_assert(test_relationship<is_convertible, int, void>(false), "");
+  static_assert(test_relationship<is_convertible, int[4], void>(false), "");
 
-int main()
-{
-  test01();
-  return 0;
+  static_assert(test_relationship<is_convertible, int, int&>(false), "");
+  static_assert(test_relationship<is_convertible, float,
+               volatile float&>(false), "");
+  static_assert(test_relationship<is_convertible, const volatile int,
+               const volatile int&>(false), "");
+  static_assert(test_relationship<is_convertible, volatile int,
+               volatile int&>(false), "");
+  static_assert(test_relationship<is_convertible, int&,
+               ExplicitClass>(false), "");
+  static_assert(test_relationship<is_convertible, void*,
+               ExplicitClass>(false), "");
 }