libstdc++: Avoid warnings in tests
authorJonathan Wakely <jwakely@redhat.com>
Thu, 29 Oct 2020 22:47:21 +0000 (22:47 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 29 Oct 2020 22:47:21 +0000 (22:47 +0000)
This fixes some warnings emitted when testing with warning flags added.
Some of these are only necessary when testing with -Wsystem-headers, but
either way it cleans up the tests to be less noisy under non-default
flags.

libstdc++-v3/ChangeLog:

* testsuite/18_support/96817.cc: Avoid -Wunused warnings.
* testsuite/20_util/any/assign/2.cc: Likewise.
* testsuite/20_util/any/cons/2.cc: Likewise.
* testsuite/20_util/align/1.cc: Avoid -Wsign-compare warning.
* testsuite/20_util/function/65760.cc: Avoid -Wunused warning.
* testsuite/20_util/function/1.cc: Avoid -Wcatch-value warning.
* testsuite/20_util/function/cons/move_target.cc: Avoid -Wunused
warning.
* testsuite/20_util/headers/memory/synopsis.cc: Add exception
specification.
* testsuite/20_util/monotonic_buffer_resource/allocate.cc: Avoid
-Wsign-compare warning.
* testsuite/20_util/tuple/cons/deduction.cc: Avoid -Wunused
warning.
* testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc:
Avoid -Wdeprecated-copy warning.
* testsuite/21_strings/basic_string/56166.cc: Avoid
-Wcatch-value warning.
* testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
Avoid -Wcatch-value warnings.
* testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc:
Prune additional diagnostics.
* testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Add exception
specifications.
* testsuite/22_locale/locale/cons/12352.cc: Define sized
delete operators to avoid warnings.
* testsuite/23_containers/deque/modifiers/swap/1.cc: Add
exception specification.
* testsuite/23_containers/forward_list/cons/11.cc: Avoid
-Wdeprecated-copy warning.
* testsuite/23_containers/headers/bitset/synopsis.cc: Add
exception specification.
* testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
* testsuite/23_containers/headers/forward_list/synopsis.cc:
Likewise.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/23_containers/headers/map/synopsis.cc: Likewise.
* testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
* testsuite/23_containers/headers/set/synopsis.cc: Likewise.
* testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
* testsuite/23_containers/list/modifiers/swap/1.cc: Likewise.
* testsuite/23_containers/map/modifiers/swap/1.cc: Likewise.
* testsuite/23_containers/multimap/modifiers/swap/1.cc:
Likewise.
* testsuite/23_containers/multiset/modifiers/swap/1.cc:
Likewise.
* testsuite/23_containers/set/modifiers/swap/1.cc: Likewise.
* testsuite/23_containers/unordered_set/56267-2.cc: Avoid
-Wdeprecated-copy warning.
* testsuite/23_containers/vector/bool/23632.cc: Avoid
-Wempty-body warning.
* testsuite/23_containers/vector/modifiers/swap/1.cc: Add
exception specification.
* testsuite/25_algorithms/heap/moveable2.cc: Fix misplaced
parentheses around arguments.
* testsuite/25_algorithms/sample/1.cc: Use return value.
* testsuite/25_algorithms/search/searcher.cc: Avoid -Wunused
warnings.
* testsuite/27_io/basic_ostream/exceptions/char/9561.cc:
Likewise.
* testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc:
Likewise.
* testsuite/27_io/filesystem/operations/remove_all.cc: Avoid
-Wsign-compare warning.
* testsuite/experimental/any/assign/2.cc: Avoid -Wunused warnings.
* testsuite/experimental/any/cons/2.cc: Likewise.
* testsuite/experimental/filesystem/operations/remove_all.cc:
Avoid -Wign-compare warning.
* testsuite/experimental/memory/observer_ptr/cons/cons.cc:
Likewise.
* testsuite/experimental/memory_resource/null_memory_resource.cc:
Likewise.
* testsuite/experimental/source_location/1.cc: Avoid -Waddress
warning.
* testsuite/ext/pod_char_traits.cc: Avoid -Wunused warning.
* testsuite/ext/vstring/modifiers/clear/56166.cc: Avoid
-Wcatch-value.
* testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
Avoid -Wunused warning.
* testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
Likewise.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc:
Prune additional warnings.
* testsuite/tr1/3_function_objects/function/1.cc: Avoid
-Wcatch-value warning.
* testsuite/util/replacement_memory_operators.h: Define sized
delete to avoid warnings.
* testsuite/util/testsuite_api.h (_NonDefaultConstructible): Add
user-declared assignment operator to stop -Wdeprecated-copy
warnings.
* testsuite/util/testsuite_containers.h: Avoid -Wunused warning.
* testsuite/util/testsuite_iterators.h: Avoid -Wsign-compare
warnings.
* testsuite/util/testsuite_new_operators.h: Define sized deleted.

74 files changed:
libstdc++-v3/testsuite/18_support/96817.cc
libstdc++-v3/testsuite/20_util/align/1.cc
libstdc++-v3/testsuite/20_util/any/assign/2.cc
libstdc++-v3/testsuite/20_util/any/cons/2.cc
libstdc++-v3/testsuite/20_util/function/1.cc
libstdc++-v3/testsuite/20_util/function/65760.cc
libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/allocate.cc
libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc
libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
libstdc++-v3/testsuite/21_strings/basic_string/56166.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc
libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc
libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc
libstdc++-v3/testsuite/21_strings/headers/string/synopsis.cc
libstdc++-v3/testsuite/22_locale/locale/cons/12352.cc
libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/1.cc
libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
libstdc++-v3/testsuite/23_containers/headers/bitset/synopsis.cc
libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
libstdc++-v3/testsuite/23_containers/headers/vector/synopsis.cc
libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.cc
libstdc++-v3/testsuite/23_containers/map/modifiers/swap/1.cc
libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/1.cc
libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
libstdc++-v3/testsuite/25_algorithms/sample/1.cc
libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/char/9561.cc
libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc
libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
libstdc++-v3/testsuite/experimental/any/assign/2.cc
libstdc++-v3/testsuite/experimental/any/cons/2.cc
libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
libstdc++-v3/testsuite/experimental/memory/observer_ptr/cons/cons.cc
libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
libstdc++-v3/testsuite/experimental/source_location/1.cc
libstdc++-v3/testsuite/ext/pod_char_traits.cc
libstdc++-v3/testsuite/ext/vstring/modifiers/clear/56166.cc
libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc
libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc
libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
libstdc++-v3/testsuite/tr1/3_function_objects/function/1.cc
libstdc++-v3/testsuite/util/replacement_memory_operators.h
libstdc++-v3/testsuite/util/testsuite_api.h
libstdc++-v3/testsuite/util/testsuite_containers.h
libstdc++-v3/testsuite/util/testsuite_iterators.h
libstdc++-v3/testsuite/util/testsuite_new_operators.h

index 19399c473ef17ec9318759cd6d68a0737e60fbe2..f0332967831312e0663469b731d89efd19c6a7a0 100644 (file)
@@ -38,7 +38,7 @@ int init()
 void clean_terminate() { _Exit(0); }
 
 int
-main (int argc, char **argv)
+main ()
 {
   std::set_terminate(clean_terminate);
   init();
index 2fc1b6d1d9c3ec3c2f29a093e1c71989163dcc24..a08b0312fb91cdf2886a5f8d65da97fdc9d636c8 100644 (file)
@@ -30,6 +30,8 @@
 void
 test01()
 {
+  using std::size_t;
+
   size_t space = 100;
   void* ptr = new char[space];
   char* const orig_ptr = static_cast<char*>(ptr);
@@ -44,7 +46,7 @@ test01()
       uintptr_t p = reinterpret_cast<uintptr_t>(ptr);
       VERIFY( p % alignment == 0 );
       char* const x = static_cast<char*>(ptr);
-      VERIFY( x - old_ptr == old_space - space );
+      VERIFY( size_t(x - old_ptr) == old_space - space );
       VERIFY( (void*)x < (void*)(orig_ptr + orig_space) );
       VERIFY( (void*)(x + size) < (void*)(orig_ptr + orig_space) );
       ptr = x + size;
index bd1aab454f6e9dc4892e0e79f3ef490f16118ec3..64b0dbb2b63446014c3138b554afc6d0028b9d35 100644 (file)
@@ -31,14 +31,14 @@ struct X
 {
   X() = default;
   X(const X&) { copied = true; }
-  X(X&& x) { moved = true; }
+  X(X&&) { moved = true; }
 };
 
 struct X2
 {
   X2() = default;
   X2(const X2&) { copied = true; }
-  X2(X2&& x) noexcept { moved = true; }
+  X2(X2&&) noexcept { moved = true; }
 };
 
 void test01()
index 36f6ec86088448943b548b1d86e2daecb8257156..1ce150cdca7fbca76a2522726eee92f756b08c19 100644 (file)
@@ -31,14 +31,14 @@ struct X
 {
   X() = default;
   X(const X&) { copied = true; }
-  X(X&& x) { moved = true; }
+  X(X&&) { moved = true; }
 };
 
 struct X2
 {
   X2() = default;
   X2(const X2&) { copied = true; }
-  X2(X2&& x) noexcept { moved = true; }
+  X2(X2&&) noexcept { moved = true; }
 };
 
 void test01()
index bb2f737b4bbbac66149a304b4360c3a4be437330..efcd160e7d3bed9fd8cf1b08efcedeec71024a0f 100644 (file)
@@ -67,7 +67,7 @@ void test01()
       f1(3.14159f);
       VERIFY( false );
     }
-  catch (bad_function_call)
+  catch (const bad_function_call&)
     {
       thrown = true;
     }
index 6dd320cbca499d6db4d96a85dffb9bfc7fe51baf..afd323e239be76735672e22df9f77d4c5c909ae0 100644 (file)
@@ -31,7 +31,4 @@ struct C {
     C operator()(int, int);
 };
 
-int main() {
-    C c = C();
-}
-
+C c = C();
index e0880c3304cf7e2eb92ad7e915ead1f5d6e96664..5b6ae319354268b475aaf823605840a8e73399b5 100644 (file)
@@ -25,7 +25,7 @@ struct moveable
   ~moveable() = default;
   // target object must be CopyConstructible,
   // but should not be copied during this test
-  moveable(const moveable& c) { throw "copied"; }
+  moveable(const moveable&) { throw "copied"; }
   moveable& operator=(const moveable&) = delete;
   moveable(moveable&&) { }
 
index 187de621257470f687621c595cac6f35ac5fdd9f..96786e1810af8bbbe2a5f7f594c4c238290c2aec 100644 (file)
 
 #include <memory>
 
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#endif
+
 namespace std {
   //  lib.default.allocator, the default allocator:
   template <class T> class allocator;
@@ -40,7 +44,7 @@ namespace std {
 
   //  lib.temporary.buffer, temporary buffers:
   template <class T>
-  pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n);
+  pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n) NOTHROW;
   template <class T>
   void return_temporary_buffer(T* p);
 
index 637bdf1b30ec461b8b0d8e78266ea706a24e7024..2f7facd0655c663d91793262333721e7beb44272 100644 (file)
@@ -150,7 +150,7 @@ test04()
   {
     std::size_t size = 1 << i;
     void* ptr = mr.allocate(size, 1);
-    VERIFY( ((char*)ptr - (char*)prev_ptr) == prev_size );
+    VERIFY( std::size_t((char*)ptr - (char*)prev_ptr) == prev_size );
     prev_ptr = ptr;
     prev_size = size;
   }
index 40f4b8caed29125f702c32f812ffc379c9f32866..513803201f8449d30634624736f4aa9e8670e24b 100644 (file)
@@ -31,6 +31,8 @@ struct c
   c(void* o = 0) : m(o) {}
   c(const c &r) : m(r.m) {}
 
+  c& operator=(const c &) = default;
+
   template<class T>
     explicit c(T &o) : m((void*)0xdeadbeef) { }
 };
index 2b5b9f15d3b15da85f76fb6f4c10ad242adbfe29..120a3154545804681f4f110afae5eabf8a185bdc 100644 (file)
@@ -124,10 +124,8 @@ test04()
   std::pair<int, unsigned> p;
   std::tuple x = p;
   check_type<std::tuple<int, unsigned>>(x);
-  int y = 42;
   std::tuple x2{p};
   check_type<std::tuple<int, unsigned>>(x2);
-  const int z = 666;
   std::pair<const int, unsigned> p2;
   std::tuple x3{p2};
   check_type<std::tuple<const int, unsigned>>(x3);
index 6ee51c8f1c8fedce72a0c7493fa8559c67922c8f..0feb747e880f4c8529883c5660aaf2a2131c7a61 100644 (file)
@@ -87,7 +87,7 @@ int main()
       fail_after = i;
       f();
       break;
-    } catch (std::bad_alloc) {
+    } catch (const std::bad_alloc&) {
     }
   }
 }
index 3265ccbff8750870e40ca667f8a825256dd45027..58b40ed176e420b81dbc757873c150e4c250edad 100644 (file)
@@ -38,9 +38,9 @@ test01()
   try
     {
       string one;
-      stod(one);      
+      stod(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -53,9 +53,9 @@ test01()
   try
     {
       string one("a");
-      stod(one);      
+      stod(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -69,7 +69,7 @@ test01()
   try
     {
       string one("2.0a");
-      d1 = stod(one, &idx1);      
+      d1 = stod(one, &idx1);
     }
   catch(...)
     {
@@ -86,7 +86,7 @@ test01()
       one.append(2 * numeric_limits<double>::max_exponent10, '9');
       d1 = stod(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -120,7 +120,7 @@ test01()
          string one(to_string(ld1));
          d1 = stod(one);
        }
-      catch(std::out_of_range)
+      catch(const std::out_of_range&)
        {
          test = true;
        }
index 4cb9b13e331b69c340ab8bb60d79ea540e3f55f7..1a203721e565c55a4a5e6d30f4f6465db147e534 100644 (file)
@@ -36,9 +36,9 @@ test01()
   try
     {
       string one;
-      stof(one);      
+      stof(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -51,9 +51,9 @@ test01()
   try
     {
       string one("a");
-      stof(one);      
+      stof(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -67,7 +67,7 @@ test01()
   try
     {
       string one("2.0a");
-      f1 = stof(one, &idx1);      
+      f1 = stof(one, &idx1);
     }
   catch(...)
     {
@@ -84,7 +84,7 @@ test01()
       one.append(2 * numeric_limits<float>::max_exponent10, '9');
       f1 = stof(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -118,7 +118,7 @@ test01()
          string one(to_string(ld1));
          f1 = stof(one);
        }
-      catch(std::out_of_range)
+      catch(const std::out_of_range&)
        {
          test = true;
        }
index 656c6f713d7ea81cd6de631820c0e67d30bd0e13..21d1d296b7784d0166d05cc1120aff6ff2f48d90 100644 (file)
@@ -36,9 +36,9 @@ test01()
   try
     {
       string one;
-      stoi(one);      
+      stoi(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -51,9 +51,9 @@ test01()
   try
     {
       string one("a");
-      stoi(one);      
+      stoi(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -66,7 +66,7 @@ test01()
   try
     {
       string one("a");
-      i1 = stoi(one, 0, 16);      
+      i1 = stoi(one, 0, 16);
     }
   catch(...)
     {
@@ -79,7 +79,7 @@ test01()
   try
     {
       string one("78");
-      i1 = stoi(one, &idx1, 8);      
+      i1 = stoi(one, &idx1, 8);
     }
   catch(...)
     {
@@ -92,7 +92,7 @@ test01()
   try
     {
       string one("10112");
-      i1 = stoi(one, &idx1, 2);      
+      i1 = stoi(one, &idx1, 2);
     }
   catch(...)
     {
@@ -105,7 +105,7 @@ test01()
   try
     {
       string one("0XE");
-      i1 = stoi(one, &idx1, 0);      
+      i1 = stoi(one, &idx1, 0);
     }
   catch(...)
     {
@@ -121,7 +121,7 @@ test01()
       string one(1000, '9');
       i1 = stoi(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -166,7 +166,7 @@ test01()
       string one(to_string(ll0));
       i1 = stoi(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -184,7 +184,7 @@ test01()
       string one(to_string(ll1));
       i1 = stoi(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index 48b17ba23937e01252369c7d5cff4106b71ca4bf..9a4ed2571689d5dad6075aa20ab3b22fa866a484 100644 (file)
@@ -36,9 +36,9 @@ test01()
   try
     {
       string one;
-      stol(one);      
+      stol(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -51,9 +51,9 @@ test01()
   try
     {
       string one("a");
-      stol(one);      
+      stol(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -66,7 +66,7 @@ test01()
   try
     {
       string one("a");
-      l1 = stol(one, 0, 16);      
+      l1 = stol(one, 0, 16);
     }
   catch(...)
     {
@@ -79,7 +79,7 @@ test01()
   try
     {
       string one("78");
-      l1 = stol(one, &idx1, 8);      
+      l1 = stol(one, &idx1, 8);
     }
   catch(...)
     {
@@ -92,7 +92,7 @@ test01()
   try
     {
       string one("10112");
-      l1 = stol(one, &idx1, 2);      
+      l1 = stol(one, &idx1, 2);
     }
   catch(...)
     {
@@ -105,7 +105,7 @@ test01()
   try
     {
       string one("0XE");
-      l1 = stol(one, &idx1, 0);      
+      l1 = stol(one, &idx1, 0);
     }
   catch(...)
     {
@@ -121,7 +121,7 @@ test01()
       string one(1000, '9');
       l1 = stol(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index f9fd524ec3beb74bb805bab6ed0a9831cba6e116..f120ccca128df4f577e92505c48aa9a6d0267ac3 100644 (file)
@@ -37,9 +37,9 @@ test01()
   try
     {
       string one;
-      stold(one);      
+      stold(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -52,9 +52,9 @@ test01()
   try
     {
       string one("a");
-      stold(one);      
+      stold(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -68,7 +68,7 @@ test01()
   try
     {
       string one("2.0a");
-      ld1 = stold(one, &idx1);      
+      ld1 = stold(one, &idx1);
     }
   catch(...)
     {
@@ -85,7 +85,7 @@ test01()
       one.append(2 * numeric_limits<long double>::max_exponent10, '9');
       ld1 = stold(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index 921db80046157bfc35d3301068f8f29b47420cd0..24761bb1479619074cf736d2946eaa0352991331 100644 (file)
@@ -36,9 +36,9 @@ test01()
   try
     {
       string one;
-      stoll(one);      
+      stoll(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -51,9 +51,9 @@ test01()
   try
     {
       string one("a");
-      stoll(one);      
+      stoll(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -66,7 +66,7 @@ test01()
   try
     {
       string one("a");
-      ll1 = stoll(one, 0, 16);      
+      ll1 = stoll(one, 0, 16);
     }
   catch(...)
     {
@@ -79,7 +79,7 @@ test01()
   try
     {
       string one("78");
-      ll1 = stoll(one, &idx1, 8);      
+      ll1 = stoll(one, &idx1, 8);
     }
   catch(...)
     {
@@ -92,7 +92,7 @@ test01()
   try
     {
       string one("10112");
-      ll1 = stoll(one, &idx1, 2);      
+      ll1 = stoll(one, &idx1, 2);
     }
   catch(...)
     {
@@ -105,7 +105,7 @@ test01()
   try
     {
       string one("0XE");
-      ll1 = stoll(one, &idx1, 0);      
+      ll1 = stoll(one, &idx1, 0);
     }
   catch(...)
     {
@@ -121,7 +121,7 @@ test01()
       string one(1000, '9');
       ll1 = stoll(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index 703daa7b75f0e5117f2d0d5c02a9d19fac220024..489a569c6ab19b6e1aaed489aa2160b841405dd1 100644 (file)
@@ -36,9 +36,9 @@ test01()
   try
     {
       string one;
-      stoul(one);      
+      stoul(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -51,9 +51,9 @@ test01()
   try
     {
       string one("a");
-      stoul(one);      
+      stoul(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -66,7 +66,7 @@ test01()
   try
     {
       string one("a");
-      ul1 = stoul(one, 0, 16);      
+      ul1 = stoul(one, 0, 16);
     }
   catch(...)
     {
@@ -79,7 +79,7 @@ test01()
   try
     {
       string one("78");
-      ul1 = stoul(one, &idx1, 8);      
+      ul1 = stoul(one, &idx1, 8);
     }
   catch(...)
     {
@@ -92,7 +92,7 @@ test01()
   try
     {
       string one("10112");
-      ul1 = stoul(one, &idx1, 2);      
+      ul1 = stoul(one, &idx1, 2);
     }
   catch(...)
     {
@@ -105,7 +105,7 @@ test01()
   try
     {
       string one("0XE");
-      ul1 = stoul(one, &idx1, 0);      
+      ul1 = stoul(one, &idx1, 0);
     }
   catch(...)
     {
@@ -121,7 +121,7 @@ test01()
       string one(1000, '9');
       ul1 = stoul(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index ab2ae036115476c7b7558fda4ac1f81acb8398c5..a0330e24b93f68ef1d80358fa6a22522413edc49 100644 (file)
@@ -36,9 +36,9 @@ test01()
   try
     {
       string one;
-      stoull(one);      
+      stoull(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -46,14 +46,14 @@ test01()
     {
     }
   VERIFY( test );
-  
+
   test = false;
   try
     {
       string one("a");
-      stoull(one);      
+      stoull(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -66,7 +66,7 @@ test01()
   try
     {
       string one("a");
-      ull1 = stoull(one, 0, 16);      
+      ull1 = stoull(one, 0, 16);
     }
   catch(...)
     {
@@ -79,7 +79,7 @@ test01()
   try
     {
       string one("78");
-      ull1 = stoull(one, &idx1, 8);      
+      ull1 = stoull(one, &idx1, 8);
     }
   catch(...)
     {
@@ -92,7 +92,7 @@ test01()
   try
     {
       string one("10112");
-      ull1 = stoull(one, &idx1, 2);      
+      ull1 = stoull(one, &idx1, 2);
     }
   catch(...)
     {
@@ -105,7 +105,7 @@ test01()
   try
     {
       string one("0XE");
-      ull1 = stoull(one, &idx1, 0);      
+      ull1 = stoull(one, &idx1, 0);
     }
   catch(...)
     {
@@ -121,7 +121,7 @@ test01()
       string one(1000, '9');
       ull1 = stoull(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index f691abd08ccfafde7d82f37792564e6f9ba4b500..cfe2de2e603dccca698c1bc98ce23225607aeac4 100644 (file)
@@ -39,9 +39,9 @@ test01()
   try
     {
       wstring one;
-      stod(one);      
+      stod(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -54,9 +54,9 @@ test01()
   try
     {
       wstring one(L"a");
-      stod(one);      
+      stod(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -70,7 +70,7 @@ test01()
   try
     {
       wstring one(L"2.0a");
-      d1 = stod(one, &idx1);      
+      d1 = stod(one, &idx1);
     }
   catch(...)
     {
@@ -87,7 +87,7 @@ test01()
       one.append(2 * numeric_limits<double>::max_exponent10, L'9');
       d1 = stod(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -121,7 +121,7 @@ test01()
          wstring one(to_wstring(ld1));
          d1 = stod(one);
        }
-      catch(std::out_of_range)
+      catch(const std::out_of_range&)
        {
          test = true;
        }
index 0aeec211aad2fef657aa58176d4736cdc53d66c7..3d02ec4f88ca1344e7bd2aae6a745e692aa9c46b 100644 (file)
@@ -37,9 +37,9 @@ test01()
   try
     {
       wstring one;
-      stof(one);      
+      stof(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -52,9 +52,9 @@ test01()
   try
     {
       wstring one(L"a");
-      stof(one);      
+      stof(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -68,7 +68,7 @@ test01()
   try
     {
       wstring one(L"2.0a");
-      f1 = stof(one, &idx1);      
+      f1 = stof(one, &idx1);
     }
   catch(...)
     {
@@ -85,7 +85,7 @@ test01()
       one.append(2 * numeric_limits<float>::max_exponent10, L'9');
       f1 = stof(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -119,7 +119,7 @@ test01()
          wstring one(to_wstring(ld1));
          f1 = stof(one);
        }
-      catch(std::out_of_range)
+      catch(const std::out_of_range&)
        {
          test = true;
        }
index 0e25023c4ee1e3f11e82d640acd9bafedac36844..f6187a9019d710d24f4308a1f295db2a0dfd1917 100644 (file)
@@ -37,9 +37,9 @@ test01()
   try
     {
       wstring one;
-      stoi(one);      
+      stoi(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -52,9 +52,9 @@ test01()
   try
     {
       wstring one(L"a");
-      stoi(one);      
+      stoi(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -67,7 +67,7 @@ test01()
   try
     {
       wstring one(L"a");
-      i1 = stoi(one, 0, 16);      
+      i1 = stoi(one, 0, 16);
     }
   catch(...)
     {
@@ -80,7 +80,7 @@ test01()
   try
     {
       wstring one(L"78");
-      i1 = stoi(one, &idx1, 8);      
+      i1 = stoi(one, &idx1, 8);
     }
   catch(...)
     {
@@ -93,7 +93,7 @@ test01()
   try
     {
       wstring one(L"10112");
-      i1 = stoi(one, &idx1, 2);      
+      i1 = stoi(one, &idx1, 2);
     }
   catch(...)
     {
@@ -106,7 +106,7 @@ test01()
   try
     {
       wstring one(L"0XE");
-      i1 = stoi(one, &idx1, 0);      
+      i1 = stoi(one, &idx1, 0);
     }
   catch(...)
     {
@@ -122,7 +122,7 @@ test01()
       wstring one(1000, L'9');
       i1 = stoi(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -167,7 +167,7 @@ test01()
       wstring one(to_wstring(ll0));
       i1 = stoi(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
@@ -185,7 +185,7 @@ test01()
       wstring one(to_wstring(ll1));
       i1 = stoi(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index 968d1355a68834c6959edc3f2aa339693ca3d470..9c78d9839fa1b0fdf0df6e929f353ccbbbf3b812 100644 (file)
@@ -37,9 +37,9 @@ test01()
   try
     {
       wstring one;
-      stol(one);      
+      stol(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -52,9 +52,9 @@ test01()
   try
     {
       wstring one(L"a");
-      stol(one);      
+      stol(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -67,7 +67,7 @@ test01()
   try
     {
       wstring one(L"a");
-      l1 = stol(one, 0, 16);      
+      l1 = stol(one, 0, 16);
     }
   catch(...)
     {
@@ -80,7 +80,7 @@ test01()
   try
     {
       wstring one(L"78");
-      l1 = stol(one, &idx1, 8);      
+      l1 = stol(one, &idx1, 8);
     }
   catch(...)
     {
@@ -93,7 +93,7 @@ test01()
   try
     {
       wstring one(L"10112");
-      l1 = stol(one, &idx1, 2);      
+      l1 = stol(one, &idx1, 2);
     }
   catch(...)
     {
@@ -106,7 +106,7 @@ test01()
   try
     {
       wstring one(L"0XE");
-      l1 = stol(one, &idx1, 0);      
+      l1 = stol(one, &idx1, 0);
     }
   catch(...)
     {
@@ -122,7 +122,7 @@ test01()
       wstring one(1000, L'9');
       l1 = stol(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index 9642dc9c27ce083361206759a02cefafc3b0a0b9..a637a549f145e79a4ee5ee870968c0aa62a6ac10 100644 (file)
@@ -39,9 +39,9 @@ test01()
   try
     {
       wstring one;
-      stold(one);      
+      stold(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -54,9 +54,9 @@ test01()
   try
     {
       wstring one(L"a");
-      stold(one);      
+      stold(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -70,7 +70,7 @@ test01()
   try
     {
       wstring one(L"2.0a");
-      ld1 = stold(one, &idx1);      
+      ld1 = stold(one, &idx1);
     }
   catch(...)
     {
@@ -87,7 +87,7 @@ test01()
       one.append(2 * numeric_limits<long double>::max_exponent10, L'9');
       ld1 = stold(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index f4c237dead812682f18fe0ab6d58bee0d9de654a..326fa5fbd5d94852e6030432655faa55beb62d44 100644 (file)
@@ -37,9 +37,9 @@ test01()
   try
     {
       wstring one;
-      stoll(one);      
+      stoll(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -52,9 +52,9 @@ test01()
   try
     {
       wstring one(L"a");
-      stoll(one);      
+      stoll(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -67,7 +67,7 @@ test01()
   try
     {
       wstring one(L"a");
-      ll1 = stoll(one, 0, 16);      
+      ll1 = stoll(one, 0, 16);
     }
   catch(...)
     {
@@ -80,7 +80,7 @@ test01()
   try
     {
       wstring one(L"78");
-      ll1 = stoll(one, &idx1, 8);      
+      ll1 = stoll(one, &idx1, 8);
     }
   catch(...)
     {
@@ -93,7 +93,7 @@ test01()
   try
     {
       wstring one(L"10112");
-      ll1 = stoll(one, &idx1, 2);      
+      ll1 = stoll(one, &idx1, 2);
     }
   catch(...)
     {
@@ -106,7 +106,7 @@ test01()
   try
     {
       wstring one(L"0XE");
-      ll1 = stoll(one, &idx1, 0);      
+      ll1 = stoll(one, &idx1, 0);
     }
   catch(...)
     {
@@ -122,7 +122,7 @@ test01()
       wstring one(1000, L'9');
       ll1 = stoll(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index 4cdc656911028a0e0858c09a38d709ed575d5a59..3020a570c5249cae72d582fb156285fc9cbeef08 100644 (file)
@@ -37,9 +37,9 @@ test01()
   try
     {
       wstring one;
-      stoul(one);      
+      stoul(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -52,9 +52,9 @@ test01()
   try
     {
       wstring one(L"a");
-      stoul(one);      
+      stoul(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -67,7 +67,7 @@ test01()
   try
     {
       wstring one(L"a");
-      ul1 = stoul(one, 0, 16);      
+      ul1 = stoul(one, 0, 16);
     }
   catch(...)
     {
@@ -80,7 +80,7 @@ test01()
   try
     {
       wstring one(L"78");
-      ul1 = stoul(one, &idx1, 8);      
+      ul1 = stoul(one, &idx1, 8);
     }
   catch(...)
     {
@@ -93,7 +93,7 @@ test01()
   try
     {
       wstring one(L"10112");
-      ul1 = stoul(one, &idx1, 2);      
+      ul1 = stoul(one, &idx1, 2);
     }
   catch(...)
     {
@@ -106,7 +106,7 @@ test01()
   try
     {
       wstring one(L"0XE");
-      ul1 = stoul(one, &idx1, 0);      
+      ul1 = stoul(one, &idx1, 0);
     }
   catch(...)
     {
@@ -122,7 +122,7 @@ test01()
       wstring one(1000, L'9');
       ul1 = stoul(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index de16e4ee476132f490c53bc9db18dd8b2576f49b..db0175ef050ea41764ca493a456ec3f85f2c4dd1 100644 (file)
@@ -37,9 +37,9 @@ test01()
   try
     {
       wstring one;
-      stoull(one);      
+      stoull(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -47,14 +47,14 @@ test01()
     {
     }
   VERIFY( test );
-  
+
   test = false;
   try
     {
       wstring one(L"a");
-      stoull(one);      
+      stoull(one);
     }
-  catch(std::invalid_argument)
+  catch(const std::invalid_argument&)
     {
       test = true;
     }
@@ -67,7 +67,7 @@ test01()
   try
     {
       wstring one(L"a");
-      ull1 = stoull(one, 0, 16);      
+      ull1 = stoull(one, 0, 16);
     }
   catch(...)
     {
@@ -80,7 +80,7 @@ test01()
   try
     {
       wstring one(L"78");
-      ull1 = stoull(one, &idx1, 8);      
+      ull1 = stoull(one, &idx1, 8);
     }
   catch(...)
     {
@@ -93,7 +93,7 @@ test01()
   try
     {
       wstring one(L"10112");
-      ull1 = stoull(one, &idx1, 2);      
+      ull1 = stoull(one, &idx1, 2);
     }
   catch(...)
     {
@@ -106,7 +106,7 @@ test01()
   try
     {
       wstring one(L"0XE");
-      ull1 = stoull(one, &idx1, 0);      
+      ull1 = stoull(one, &idx1, 0);
     }
   catch(...)
     {
@@ -122,7 +122,7 @@ test01()
       wstring one(1000, L'9');
       ull1 = stoull(one);
     }
-  catch(std::out_of_range)
+  catch(const std::out_of_range&)
     {
       test = true;
     }
index 7060ffb01092db1c8c092f7aa93a81a91d0427cd..b77de279576faa506bd76e62143af0d19cea55c6 100644 (file)
@@ -27,3 +27,6 @@ test01()
   return s.compare((const char*)nullptr);      // { dg-warning "\\\[-Wnonnull" }
   return s.compare(0, 2, (const char*)nullptr);        // { dg-warning "\\\[-Wnonnull" }
 }
+
+// Ignore additional diagnostic given with -Wsystem-headers:
+// { dg-prune-output "argument 1 null where non-null expected" }
index 97c7629d388fa5e886b9aac52d55d3a28f37ce7a..1025396fba2650029447fb05b6646ed69e8136c1 100644 (file)
@@ -31,3 +31,6 @@ test01()
   return s.find_first_not_of((const char*)nullptr); // { dg-warning "\\\[-Wnonnull" }
   return s.find_first_not_of((const char*)nullptr, 1); // { dg-warning "\\\[-Wnonnull" }
 }
+
+// Ignore additional diagnostic given with -Wsystem-headers:
+// { dg-prune-output "argument . null where non-null expected" }
index 91525a54d1a3f09a708aa6af37f49afd570c70ba..fd7a4bcad33b4599e004f2f75e6410523a761dd3 100644 (file)
@@ -27,3 +27,6 @@ test01()
   return s.rfind((const char*)nullptr);                // { dg-warning "\\\[-Wnonnull" }
   return s.rfind((const char*)nullptr, 1);     // { dg-warning "\\\[-Wnonnull" }
 }
+
+// Ignore additional diagnostic given with -Wsystem-headers:
+// { dg-prune-output "argument . null where non-null expected" }
index dea3dd102906323b0bfebf33da4d7af62f849d8d..d48394f514da0345c78ca54d5fc9500050ea8aa7 100644 (file)
 
 #include <string>
 
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 namespace std {
   //  lib.char.traits, character traits:
   template<class charT>
@@ -54,7 +60,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
 
   template<class charT, class traits, class Allocator>
   bool operator==(const basic_string<charT,traits,Allocator>& lhs,
-                 const basic_string<charT,traits,Allocator>& rhs);
+                 const basic_string<charT,traits,Allocator>& rhs) NOTHROW;
   template<class charT, class traits, class Allocator>
   bool operator==(const charT* lhs,
                  const basic_string<charT,traits,Allocator>& rhs);
@@ -63,7 +69,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
                  const charT* rhs);
   template<class charT, class traits, class Allocator>
   bool operator!=(const basic_string<charT,traits,Allocator>& lhs,
-                 const basic_string<charT,traits,Allocator>& rhs);
+                 const basic_string<charT,traits,Allocator>& rhs) NOTHROW;
   template<class charT, class traits, class Allocator>
   bool operator!=(const charT* lhs,
                  const basic_string<charT,traits,Allocator>& rhs);
@@ -73,7 +79,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
 
   template<class charT, class traits, class Allocator>
   bool operator< (const basic_string<charT,traits,Allocator>& lhs,
-                 const basic_string<charT,traits,Allocator>& rhs);
+                 const basic_string<charT,traits,Allocator>& rhs) NOTHROW;
   template<class charT, class traits, class Allocator>
   bool operator< (const basic_string<charT,traits,Allocator>& lhs,
                  const charT* rhs);
@@ -82,7 +88,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
                  const basic_string<charT,traits,Allocator>& rhs);
   template<class charT, class traits, class Allocator>
   bool operator> (const basic_string<charT,traits,Allocator>& lhs,
-                 const basic_string<charT,traits,Allocator>& rhs);
+                 const basic_string<charT,traits,Allocator>& rhs) NOTHROW;
   template<class charT, class traits, class Allocator>
   bool operator> (const basic_string<charT,traits,Allocator>& lhs,
                  const charT* rhs);
@@ -92,7 +98,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
 
   template<class charT, class traits, class Allocator>
   bool operator<=(const basic_string<charT,traits,Allocator>& lhs,
-                 const basic_string<charT,traits,Allocator>& rhs);
+                 const basic_string<charT,traits,Allocator>& rhs) NOTHROW;
   template<class charT, class traits, class Allocator>
   bool operator<=(const basic_string<charT,traits,Allocator>& lhs,
                  const charT* rhs);
@@ -101,7 +107,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
                  const basic_string<charT,traits,Allocator>& rhs);
   template<class charT, class traits, class Allocator>
   bool operator>=(const basic_string<charT,traits,Allocator>& lhs,
-                 const basic_string<charT,traits,Allocator>& rhs);
+                 const basic_string<charT,traits,Allocator>& rhs) NOTHROW;
   template<class charT, class traits, class Allocator>
   bool operator>=(const basic_string<charT,traits,Allocator>& lhs,
                  const charT* rhs);
@@ -112,7 +118,11 @@ _GLIBCXX_END_NAMESPACE_CXX11
   //  lib.string.special:
   template<class charT, class traits, class Allocator>
   void swap(basic_string<charT,traits,Allocator>& lhs,
-           basic_string<charT,traits,Allocator>& rhs);
+           basic_string<charT,traits,Allocator>& rhs)
+#if __cplusplus >= 201103L
+  noexcept(noexcept(lhs.swap(rhs)))
+#endif
+  ;
 
   template<class charT, class traits, class Allocator>
   basic_istream<charT,traits>&
index 9d07c5af06310971eee37b6b27719611026d1279..5fc41116649d4450ff1e0b7c5d4f8d3d82cf8402 100644 (file)
@@ -71,6 +71,18 @@ void operator delete[](void* p) throw()
   deallocate(p);
 }
 
+#if __cpp_sized_deallocation
+void operator delete(void* p, std::size_t) throw()
+{
+  deallocate(p);
+}
+
+void operator delete[](void* p, std::size_t) throw()
+{
+  deallocate(p);
+}
+#endif
+
 void* operator new(std::size_t n, const std::nothrow_t&) throw()
 {
   return allocate(n);
index fc347991385482573cc66413e7f0e1ee2214f5cb..fb4a62c2918d68cf5f755348b3d06d3752b07c6b 100644 (file)
@@ -5,28 +5,34 @@
 // terms of the GNU General Public License as published by the
 // Free Software Foundation; either version 3, or (at your option)
 // any later version.
+
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
+
 // You should have received a copy of the GNU General Public License along
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
 #include <deque>
 #include <testsuite_hooks.h>
+
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 struct T { int i; };
 
 int swap_calls;
 
 namespace std
 {
-  template<> 
-    void 
-    deque<T, allocator<T> >::swap(deque<T, allocator<T> >&) 
+  template<>
+    void
+    deque<T, allocator<T> >::swap(deque<T, allocator<T> >&) NOTHROW
     { ++swap_calls; }
 }
 
index cb820fe7486769141a2b08a15ed98a22cfcbc6aa..194154112820e41d2254cbf5505d66e3eb49c2fa 100644 (file)
@@ -27,6 +27,7 @@ struct A
 {
   A() = default;
   A(const A&) { if (fail) throw fail; }
+  A& operator=(const A&) = default;
 };
 
 void test01()
index 3e9a704963193c1e41670b786f13a8d68385288d..d67a037fb7d4aeb562931e7c9691ffed221a86fa 100644 (file)
 
 #include <bitset>
 
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 namespace std {
   template <size_t N> class bitset;
 
   // 23.3.5.3 bitset operations:
   template <size_t N>
-    bitset<N> operator&(const bitset<N>&, const bitset<N>&);
+    bitset<N> operator&(const bitset<N>&, const bitset<N>&) NOTHROW;
 
   template <size_t N>
-    bitset<N> operator|(const bitset<N>&, const bitset<N>&);
+    bitset<N> operator|(const bitset<N>&, const bitset<N>&) NOTHROW;
 
   template <size_t N>
-    bitset<N> operator^(const bitset<N>&, const bitset<N>&);
+    bitset<N> operator^(const bitset<N>&, const bitset<N>&) NOTHROW;
 
   template <class charT, class traits, size_t N>
     basic_istream<charT, traits>&
index f043d54bd0509cbe78b8455e3c81e2a961a65426..be4098564520349fa2cf1aeefcbb29a30d024aca 100644 (file)
 
 #include <deque>
 
+#if __cplusplus >= 201103L
+# define NOTHROW(X) noexcept(X)
+#else
+# define NOTHROW(X)
+#endif
+
 namespace std {
   template <class T, class Allocator> class deque;
 
@@ -43,5 +49,6 @@ namespace std {
     bool operator<= (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
 
   template <class T, class Allocator>
-    void swap(deque<T,Allocator>& x, deque<T,Allocator>& y);
+    void swap(deque<T,Allocator>& x, deque<T,Allocator>& y)
+      NOTHROW(noexcept(x.swap(y)));
 }
index 3c2c143df16e0d7668ec2b16144a32a471707c72..5664306cefc0d038b159feb21221e4873f392f92 100644 (file)
@@ -49,5 +49,6 @@ namespace std {
                    const forward_list<T,Allocator>&);
 
   template <class T, class Allocator>
-    void swap(forward_list<T,Allocator>& x, forward_list<T,Allocator>& y);
+    void swap(forward_list<T,Allocator>& x, forward_list<T,Allocator>& y)
+      noexcept(noexcept(x.swap(y)));
 }
index c42f23635dc24cd841da9564784f1b0d68e646ae..6cfd9ff437e82925874446c2bf7aafd76cb9dd35 100644 (file)
 
 #include <list>
 
+#if __cplusplus >= 201103L
+# define NOTHROW(X) noexcept(X)
+#else
+# define NOTHROW(X)
+#endif
+
 namespace std {
 _GLIBCXX_BEGIN_NAMESPACE_CXX11
   template <class T, class Allocator> class list;
@@ -45,5 +51,6 @@ _GLIBCXX_END_NAMESPACE_CXX11
     bool operator<=(const list<T,Allocator>& x, const list<T,Allocator>&);
 
   template <class T, class Allocator>
-    void swap(list<T,Allocator>& x, list<T,Allocator>& y);
+    void swap(list<T,Allocator>& x, list<T,Allocator>& y)
+      NOTHROW(noexcept(x.swap(y)));
 }
index d57b41fa1de56e0f34fb3d0c3a95f7e5a0c6c218..f70cd0690064c642c01789066f00a9f6e6b2da9f 100644 (file)
 
 #include <map>
 
+#if __cplusplus >= 201103L
+# define NOTHROW(X) noexcept(X)
+#else
+# define NOTHROW(X)
+#endif
+
 namespace std {
   template <class Key, class T, class Compare, class Allocator>
     class map;
@@ -44,7 +50,8 @@ namespace std {
                     const map<Key,T,Compare,Allocator>& y);
   template <class Key, class T, class Compare, class Allocator>
     void swap(map<Key,T,Compare,Allocator>& x,
-              map<Key,T,Compare,Allocator>& y);
+              map<Key,T,Compare,Allocator>& y)
+      NOTHROW(noexcept(x.swap(y)));
 
   template <class Key, class T, class Compare, class Allocator>
     class multimap;
@@ -68,5 +75,6 @@ namespace std {
                     const multimap<Key,T,Compare,Allocator>& y);
   template <class Key, class T, class Compare, class Allocator>
     void swap(multimap<Key,T,Compare,Allocator>& x,
-              multimap<Key,T,Compare,Allocator>& y);
+              multimap<Key,T,Compare,Allocator>& y)
+      NOTHROW(noexcept(x.swap(y)));
 }
index 94038eeda447ea59dfe1b3ed5d0c8980e418bf0c..4426a494152fe0bf4a6b824283be5a6038836b8a 100644 (file)
 
 #include <queue>
 
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 namespace std {
   template <class T, class Container> class queue;
   template <class T, class Container>
index 4172b3ba761935267fbbbd03905d5e7bc449e2f3..5ecbabec7908efcd3629bb2b8045f73414894b43 100644 (file)
 
 #include <set>
 
+#if __cplusplus >= 201103L
+# define NOTHROW(X) noexcept(X)
+#else
+# define NOTHROW(X)
+#endif
+
 namespace std {
   template <class Key, class Compare, class Allocator>
     class set;
@@ -51,7 +57,8 @@ namespace std {
 
   template <class Key, class Compare, class Allocator>
     void swap(set<Key,Compare,Allocator>& x,
-              set<Key,Compare,Allocator>& y);
+              set<Key,Compare,Allocator>& y)
+      NOTHROW(noexcept(x.swap(y)));
 
   template <class Key, class Compare, class Allocator>
     class multiset;
@@ -82,5 +89,6 @@ namespace std {
 
   template <class Key, class Compare, class Allocator>
     void swap(multiset<Key,Compare,Allocator>& x,
-              multiset<Key,Compare,Allocator>& y);
+              multiset<Key,Compare,Allocator>& y)
+      NOTHROW(noexcept(x.swap(y)));
 }
index 54f449e56cbe0b7c47c27a024e4d00c90fe9f1e2..a728f54b7322489e295823a61e8bcbd9e20f0694 100644 (file)
 
 #include <vector>
 
+#if __cplusplus >= 201103L
+# define NOTHROW(X) noexcept(X)
+#else
+# define NOTHROW(X)
+#endif
+
 namespace std {
   template <class T, class Allocator> class vector;
 
@@ -49,7 +55,8 @@ namespace std {
                     const vector<T,Allocator>& y);
 
   template <class T, class Allocator>
-    void swap(vector<T,Allocator>& x, vector<T,Allocator>& y);
+    void swap(vector<T,Allocator>& x, vector<T,Allocator>& y)
+      NOTHROW(noexcept(x.swap(y)));
 
   template <class Allocator> class vector<bool,Allocator>;
 
index a95400e237dd4f9f2d59d9e4202c4d7d75f81567..24fa534fd0d6f1eec3673abde0164bfdc46335d4 100644 (file)
@@ -5,12 +5,12 @@
 // terms of the GNU General Public License as published by the
 // Free Software Foundation; either version 3, or (at your option)
 // any later version.
+
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
+
 // You should have received a copy of the GNU General Public License along
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 #include <list>
 #include "1.h"
 
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 namespace std
 {
-  template<> 
-    void 
-    list<T, allocator<T> >::swap(list<T, allocator<T> >&) 
+  template<>
+    void
+    list<T, allocator<T> >::swap(list<T, allocator<T> >&) NOTHROW
     { ++swap_calls; }
 }
 
index 95ec943fb835688905328799ba74f4f317cbace8..98e4344ceb3a8207a8e76977bdb57aff0528fb91 100644 (file)
@@ -5,19 +5,25 @@
 // terms of the GNU General Public License as published by the
 // Free Software Foundation; either version 3, or (at your option)
 // any later version.
+
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
+
 // You should have received a copy of the GNU General Public License along
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
 #include <map>
 #include <testsuite_hooks.h>
+
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 struct T { int i; };
 
 // T must be LessThanComparable to pass concept-checks
@@ -27,9 +33,9 @@ int swap_calls;
 
 namespace std
 {
-  template<> 
-    void 
-    map<T, int>::swap(map<T, int>&) 
+  template<>
+    void
+    map<T, int>::swap(map<T, int>&) NOTHROW
     { ++swap_calls; }
 }
 
index c737040e42d317c732272942ae6b27c24adec7cf..bdfd152fe940905146c5b4215e484c8b74a3e2e9 100644 (file)
@@ -5,19 +5,25 @@
 // terms of the GNU General Public License as published by the
 // Free Software Foundation; either version 3, or (at your option)
 // any later version.
+
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
+
 // You should have received a copy of the GNU General Public License along
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
 #include <map>
 #include <testsuite_hooks.h>
+
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 struct T { int i; };
 
 // T must be LessThanComparable to pass concept-checks
@@ -27,9 +33,9 @@ int swap_calls;
 
 namespace std
 {
-  template<> 
-    void 
-    multimap<T, int>::swap(multimap<T, int>&) 
+  template<>
+    void
+    multimap<T, int>::swap(multimap<T, int>&) NOTHROW
     { ++swap_calls; }
 }
 
index f2342904048e2ca5d680ded4e2da0740f771a09b..f56894deb2195714e7a23760a2db4cd8b06eb169 100644 (file)
@@ -5,19 +5,25 @@
 // terms of the GNU General Public License as published by the
 // Free Software Foundation; either version 3, or (at your option)
 // any later version.
+
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
+
 // You should have received a copy of the GNU General Public License along
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
 #include <set>
 #include <testsuite_hooks.h>
+
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 struct T { int i; };
 
 // T must be LessThanComparable to pass concept-checks
@@ -27,9 +33,9 @@ int swap_calls;
 
 namespace std
 {
-  template<> 
-    void 
-    multiset<T>::swap(multiset<T>&) 
+  template<>
+    void
+    multiset<T>::swap(multiset<T>&) NOTHROW
     { ++swap_calls; }
 }
 
index fce2f80dcb08f7313047f0c1f3b0fbf784aa7b13..be884613532580263afafbabbdabc031239d76ea 100644 (file)
@@ -5,19 +5,25 @@
 // terms of the GNU General Public License as published by the
 // Free Software Foundation; either version 3, or (at your option)
 // any later version.
+
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
+
 // You should have received a copy of the GNU General Public License along
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
 #include <set>
 #include <testsuite_hooks.h>
+
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 struct T { int i; };
 
 // T must be LessThanComparable to pass concept-checks
@@ -27,9 +33,9 @@ int swap_calls;
 
 namespace std
 {
-  template<> 
-    void 
-    set<T>::swap(set<T>&) 
+  template<>
+    void
+    set<T>::swap(set<T>&) NOTHROW
     { ++swap_calls; }
 }
 
index c0d41c076692a5f25ce12acbeb2b9ae0d4f2ec39..1347866f8108b49dac203ad62421b218264d47d7 100644 (file)
@@ -25,6 +25,8 @@ struct audrey2hash : std::hash<int>
 
   audrey2hash(int) { }
 
+  audrey2hash(const audrey2hash&) = default;
+
   audrey2hash&
   operator=(const audrey2hash&) { throw "Don't assign the plants"; }
 };
index 26423ee5d13fd7b3d451c319aff371cb4cbc46eb..339876f871073a692de50f0944c0ecde32f02e55 100644 (file)
@@ -29,7 +29,8 @@ void test01()
 
   const std::vector<bool>::const_iterator cfu = v.begin();
   if (cfu[0])
-    ;
+  {
+  }
 }
 
 int main()
index e15b47755e05dd5f049146baf75b45e20e109fb1..bbfa62084a195ed02d90365fe20bd25c89f26892 100644 (file)
@@ -5,28 +5,34 @@
 // terms of the GNU General Public License as published by the
 // Free Software Foundation; either version 3, or (at your option)
 // any later version.
+
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
+
 // You should have received a copy of the GNU General Public License along
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
 #include <vector>
 #include <testsuite_hooks.h>
+
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW
+#endif
+
 struct T { int i; };
 
 int swap_calls;
 
 namespace std
 {
-  template<> 
-    void 
-    vector<T, allocator<T> >::swap(vector<T, allocator<T> >&) 
+  template<>
+    void
+    vector<T, allocator<T> >::swap(vector<T, allocator<T> >&) NOTHROW
     { ++swap_calls; }
 }
 
index c1116591614bf04e9c9475e893927403a5aeccb3..0ec8359d912cb5c7edac5e3cd5593175d1dd30c3 100644 (file)
@@ -44,13 +44,13 @@ bool are_ordered(const rvalstruct& lhs, const rvalstruct& rhs)
 bool are_ordered_int(const int& lhs, const int& rhs)
 { return lhs < rhs; }
 
-void 
+void
 check_make(int* array, int length)
 {
   rvalstruct makeheap[9];
   int        makeheap_ref[9];
   std::copy(array, array + length, makeheap);
-  std::copy(array, array + length, makeheap_ref);  
+  std::copy(array, array + length, makeheap_ref);
   container makecon(makeheap, makeheap + length);
   container_ref makecon_ref(makeheap_ref, makeheap_ref + length);
   std::make_heap(makecon.begin(), makecon.end(), are_ordered);
@@ -75,7 +75,7 @@ check_pop(int* array, int length)
   std::pop_heap(popcon_ref.begin(), popcon_ref.end(), are_ordered_int);
   for (int z = 0; z < length; ++z)
     VERIFY( popheap[z] == popheap_ref[z] );
-  VERIFY( (std::__is_heap(popheap, popheap + length - 1), are_ordered) );
+  VERIFY( std::__is_heap(popheap, popheap + length - 1, are_ordered) );
   for (int z = 0; z < length; ++z)
     VERIFY( popheap[z].val <= popheap[length-1].val && popheap[z].valid );
 }
@@ -104,7 +104,7 @@ check_push(int* array, int pushval, int length)
   rvalstruct pushheap[10];
   int        pushheap_ref[10];
   std::copy(array, array + length, pushheap);
-  std::copy(array, array + length, pushheap_ref);  
+  std::copy(array, array + length, pushheap_ref);
   pushheap[length] = pushval;
   pushheap_ref[length] = pushval;
   container pushcon(pushheap, pushheap + length + 1);
index 5fc888f7b82bb9701cb0d5f5bcfa552359bcaa06..ea92c4a0ed5b9982573b2df69860f5f618cc13a6 100644 (file)
@@ -94,6 +94,7 @@ test04()
 
   // forward iterator for population and output iterator for result
   auto res = sample(pop.begin(), pop.end(), samp.begin(), sample_size, rng);
+  VERIFY( res.ptr == (out + sample_size) );
 
   // verify no duplicates
   std::sort(std::begin(out), std::end(out));
index 64b7fb122b36fd6f7645166cfabc8c8917e23536..0c371bcaa6e0c66b1897b5be444d7073a38afb58 100644 (file)
@@ -29,7 +29,7 @@ struct nocopy
 
   struct P { int* first; };
 
-  P operator()(int* f, int* l) const { return {f}; }
+  P operator()(int* f, int*) const { return {f}; }
 };
 
 void
index 4334598e4123a9028aea1afe6735059c61354b2c..81fd490e8b261577237dccdaa564a1f031a5812a 100644 (file)
@@ -46,7 +46,7 @@ void test01()
     {
       strm << std::endl;
     }
-  catch(foobar)
+  catch(const foobar&)
     {
       // strm should throw foobar and not do anything else
       VERIFY(strm.bad());
index 99cd6ee4b468d59f6abc21dfdcc0a5840f80dc43..0fdb05bdbebd793e6ac617230681b51572266fd2 100644 (file)
@@ -44,7 +44,7 @@ void test01()
     {
       strm << std::endl;
     }
-  catch(foobar)
+  catch(const foobar&)
     {
       // strm should throw foobar and not do anything else
       VERIFY(strm.bad());
index 7e018b51af26bbeade592f0be5b5390a999de10c..90685b5db7e72c2e718f27dc11a3870f8eedfd53 100644 (file)
@@ -156,7 +156,7 @@ test04()
   // remove write permission on the directory:
   fs::permissions(dir, fs::perms::owner_read|fs::perms::owner_exec);
   n = fs::remove_all(dir, ec);
-  VERIFY( n == -1 );
+  VERIFY( n == std::uintmax_t(-1) );
   VERIFY( ec == std::errc::permission_denied ); // not ENOTEMPTY
 
   try {
index e38455bdaa8555e0ece223ccb90e6ea532b0a207..c2d7fec955cbfdd40f29ac4772c15963fa92011a 100644 (file)
@@ -31,14 +31,14 @@ struct X
 {
   X() = default;
   X(const X&) { copied = true; }
-  X(X&& x) { moved = true; }
+  X(X&&) { moved = true; }
 };
 
 struct X2
 {
   X2() = default;
   X2(const X2&) { copied = true; }
-  X2(X2&& x) noexcept { moved = true; }
+  X2(X2&&) noexcept { moved = true; }
 };
 
 void test01()
index d6af44754629d9f4cb14fc8676c4891e418d664b..d6241ae5d84d7ad2b77afdf2d54416fb46e49036 100644 (file)
@@ -30,14 +30,14 @@ struct X
 {
   X() = default;
   X(const X&) { copied = true; }
-  X(X&& x) { moved = true; }
+  X(X&&) { moved = true; }
 };
 
 struct X2
 {
   X2() = default;
   X2(const X2&) { copied = true; }
-  X2(X2&& x) noexcept { moved = true; }
+  X2(X2&&) noexcept { moved = true; }
 };
 
 void test01()
index 0e2aedae96dbb75fd444a9dfe82bc6fe19c9110d..c346a95eff47cb3b9375447ad6a13c281429c3a3 100644 (file)
@@ -124,7 +124,7 @@ test04()
   // remove write permission on the directory:
   fs::permissions(dir, fs::perms::owner_read|fs::perms::owner_exec);
   n = fs::remove_all(dir, ec);
-  VERIFY( n == -1 );
+  VERIFY( n == std::uintmax_t(-1) );
   VERIFY( ec == std::errc::permission_denied ); // not ENOTEMPTY
 
   try {
index 4b29da22469f27132dbea09dc9bd8b70f02538a5..3d6bb41e3ba5f975bee6ffb967749bfca8c3468e 100644 (file)
@@ -44,7 +44,6 @@ void test02()
 
 void test03()
 {
-  int x{};
   observer_ptr<int> a;
   observer_ptr<const int> b{a};
   VERIFY(a == b);
index 01d4a949e98a021121a6b848260fd8dc43d81484..284b42829ca3966ac2fed5833b88808d93747d13 100644 (file)
@@ -31,7 +31,7 @@ test06()
   memory_resource* r = null_memory_resource();
   bool caught = false;
 
-  void* p = nullptr;
+  void* p __attribute__((unused)) = nullptr;
   try {
     p = r->allocate(1);
   } catch (const std::bad_alloc&) {
index 9f5a00df99b31a45ec23a260c5cdb892c5bdbc4a..5ca5b3addc1ad0f98fca256514834829ba76e178 100644 (file)
@@ -17,6 +17,7 @@
 
 // { dg-do run { target c++14 } }
 // { dg-require-cstdint "" }
+// { dg-options "-Wno-address" }
 
 #include <experimental/source_location>
 #include <experimental/string_view>
@@ -29,7 +30,7 @@ void
 test01()
 {
   constexpr source_location loc = source_location::current();
-  static_assert( loc.line() == 31 );
+  static_assert( loc.line() == 32 );
   // static_assert( loc.column() == 35 );
   VERIFY( loc.file_name() == __FILE__ );
   VERIFY( loc.function_name() == string_view(__FUNCTION__) );
@@ -51,13 +52,13 @@ struct S {
 void test02()
 {
   S s0;
-  VERIFY( s0.loc.line() == 53 );
+  VERIFY( s0.loc.line() == 54 );
   // static_assert( s0.loc.column() == 7 );
   VERIFY( s0.loc.file_name() == __FILE__ );
   VERIFY( s0.loc.function_name() == string_view(__FUNCTION__) );
 
   S s1(1);
-  VERIFY( s1.loc.line() == 47 );
+  VERIFY( s1.loc.line() == 48 );
   VERIFY( s1.loc.file_name() == __FILE__ );
   VERIFY( s1.loc.function_name() == s1.func );
 }
@@ -75,21 +76,21 @@ source_location g(string_view& func) {
 void test03()
 {
   auto loc = f(); // f's first argument corresponds to this line of code
-  VERIFY( loc.line() == 77 );
+  VERIFY( loc.line() == 78 );
   // static_assert( loc.column() == 16 );
   VERIFY( loc.file_name() == __FILE__ );
   VERIFY( loc.function_name() == string_view(__FUNCTION__) );
 
   source_location c = source_location::current();
   loc = f(c); // f's first argument gets the same values as c, above
-  VERIFY( loc.line() == 83 );
+  VERIFY( loc.line() == 84 );
   // static_assert( loc.column() == 23 );
   VERIFY( loc.file_name() == __FILE__ );
   VERIFY( loc.function_name() == string_view(__FUNCTION__) );
 
   string_view func;
   loc = g(func);
-  VERIFY( loc.line() == 70 );
+  VERIFY( loc.line() == 71 );
   // static_assert( loc.column() == 23 );
   VERIFY( loc.file_name() == __FILE__ );
   VERIFY( loc.function_name() == func );
index 5a12d3a623c188aa977a4348cb38bc754d7fc766..4124d2193f2dc39405792dc7287508d0468f9e8c 100644 (file)
@@ -22,6 +22,7 @@
 // Benjamin Kosnik <bkoz@redhat.com>
 
 #include <ext/pod_char_traits.h>
+#include <testsuite_hooks.h>
 
 int main()
 {
@@ -40,10 +41,12 @@ int main()
   char_type c1 = { uc1 };
   char_type c2 = { uc2 };
   test = !(c1 == c2);
+  VERIFY( test );
 
   // 2 char_traits
   test = traits_type::eq(c1, c2);
-  
+  VERIFY( ! test );
+
   // 3 basic_string<char_type>
   typedef std::basic_string<char_type> string_type;
   string_type str;
index ce2987f8722eafa7722fb5e6cf5e5f1c1ec8e5ab..84dd79eef5e692f66a545a80ca78268bfdb7c28d 100644 (file)
@@ -90,7 +90,7 @@ int main()
       fail_after = i;
       f();
       break;
-    } catch (std::bad_alloc) {
+    } catch (const std::bad_alloc&) {
     }
   }
 }
index 314d4a9a326f97f1a22e0677c16e90dfd5fdff59..a922cf94cbd873977bbd69bd850207d77192c2c4 100644 (file)
@@ -30,7 +30,7 @@ namespace nu
   constexpr void swap(U& l, U& r) { l.i = r.i = 99; }
 }
 
-constexpr bool check_struct_with_adl_swap(int i)
+constexpr bool check_struct_with_adl_swap(int)
 {
   nu::S s1, s2;
   std::ranges::swap(s1, s2);
@@ -39,7 +39,7 @@ constexpr bool check_struct_with_adl_swap(int i)
 
 static_assert(check_struct_with_adl_swap(1));
 
-constexpr bool check_array_with_adl_swap(int i)
+constexpr bool check_array_with_adl_swap(int)
 {
   nu::S s1[2], s2[2];
   std::ranges::swap(s1, s2);
index 37a72e0b65340f1f8b05e5bc309255113c29e604..a62423f1600d22b253b5af766a665e47dff20e7e 100644 (file)
 namespace nu
 {
   struct S { bool swapped = false; };
-  constexpr void swap(S& l, S& r) { }
+  constexpr void swap(S&, S&) { }
   struct T { int i; };
 
   union U { char c; int i; };
-  constexpr void swap(U& l, U& r) { }
+  constexpr void swap(U&, U&) { }
 }
 
 static_assert( std::swappable<nu::S> );
index 509fc30decfa5938e662db2283467e3b9c57f663..c1c503022c1dc6179b7ca764e3ab002db1ac8157 100644 (file)
@@ -37,3 +37,7 @@ void test01()
   std::tr1::shared_ptr<X> p9(ap());  // { dg-error "here" }
   // { dg-error "incomplete" "" { target *-*-* } 593 }
 }
+
+// Ignore additional diagnostic given with -Wsystem-headers:
+// { dg-prune-output "has incomplete type" }
+// { dg-prune-output "possible problem detected" }
index e43255c8c9c6bc8c970c45c42280969d3b5a2c6f..0037974cf4460946eabd6490b7ce76f9d7eb44e3 100644 (file)
@@ -67,7 +67,7 @@ void test01()
       f1(3.14159f);
       VERIFY( false );
     }
-  catch (bad_function_call)
+  catch (const bad_function_call&)
     {
       thrown = true;
     }
index a90ffd475245ae33ae7275176c2af363d777adb1..34c6e1b1a8b794f35c7887533065417545681907 100644 (file)
@@ -116,3 +116,7 @@ void operator delete(void* p) throw()
        std::printf("%lu allocations to be released \n", (unsigned long)count);
     }
 }
+
+#if __cpp_sized_deallocation
+void operator delete(void* p, std::size_t) throw() { ::operator delete(p); }
+#endif
index d4edd2593b52b30532ddffe8aaa58c034eaaccab..e22e04e623704ecb54904b86bd16b91495740279 100644 (file)
@@ -86,6 +86,9 @@ namespace __gnu_test
     NonDefaultConstructible(const NonDefaultConstructible&) { }
 
 #if __cplusplus >= 201103L
+    NonDefaultConstructible&
+    operator=(const NonDefaultConstructible&) = default;
+
     // For std::iota.
     NonDefaultConstructible&
     operator++()
index 33259ae36015106b149dee51f52725f672dd1185..0a030b3a29c5da025be7cb1555bf989708a3a82d 100644 (file)
@@ -168,7 +168,7 @@ namespace __gnu_test
   template<typename _Tp>
     struct reverse_members<_Tp, false>
     {
-      reverse_members(_Tp& container) { }
+      reverse_members(_Tp&) { }
     };
 
   template<typename _Iterator,
index 2eaafa16bee1b18dd1564609678d4370e61ba92a..a67f3aa6185917a503b64c59a5949cb2babd7558 100644 (file)
@@ -599,7 +599,7 @@ namespace __gnu_test
     ItType<T>
     it(int pos)
     {
-      ITERATOR_VERIFY(pos >= 0 && pos <= size());
+      ITERATOR_VERIFY(pos >= 0 && (unsigned)pos <= size());
       return ItType<T>(bounds.first + pos, &bounds);
     }
 
index e3b6e926f5a94c76b48155325faec2364316d059..46612bd9e5d32df569c117955e9c533e9b8fa69f 100644 (file)
@@ -65,6 +65,11 @@ void operator delete(void* p) throw()
     std::free(p);
 }
 
+#if __cpp_sized_deallocation
+void operator delete(void* p, std::size_t) throw()
+{ ::operator delete(p); }
+#endif
+
 void operator delete(void* p, const std::nothrow_t&) throw()
 {
   if (p)