We have FAILs in two tests that use { target c++11 } but don't actually compile in C++11 mode. One because default member initializers make the type a non-aggregate so it can't be list-initialized and one because it uses std::less<>.
There are also some tests for container adaptors which should not run in C++98 mode. Tested powerpc64le-linux, as c++{98,11,14,17}. Committed to trunk.
commit 9f9126522107fddfa45f9b9cc258c5c2ba3891eb Author: Jonathan Wakely <jwak...@redhat.com> Date: Thu Jan 26 18:33:27 2017 +0000 Fix libstdc++ testsuite failures in C++98 and C++11 mode * testsuite/23_containers/list/operations/78389.cc: Fix for C++11 mode. * testsuite/23_containers/priority_queue/requirements/constructible.cc: Mark as unsupported in C++98 mode. * testsuite/23_containers/queue/requirements/constructible.cc: Likewise. * testsuite/23_containers/stack/requirements/constructible.cc: Likewise. * testsuite/25_algorithms/make_heap/movable.cc: Fix for C++11 mode. diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc b/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc index 4d8b7d2..e0cc6e6 100644 --- a/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc +++ b/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc @@ -19,19 +19,19 @@ // 23.2.2.4 list operations [lib.list.ops] -#include <testsuite_hooks.h> - #include <list> +#include <testsuite_hooks.h> struct ThrowingComparator { - unsigned int throw_after = 0; - unsigned int count = 0; + ThrowingComparator(unsigned n) : throw_after(n), count(0) { } + unsigned int throw_after; + unsigned int count; bool operator()(int, int) { if (++count >= throw_after) { throw 666; } - return true; + return false; } }; diff --git a/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc b/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc index fa412f3..b03af48 100644 --- a/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc +++ b/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc @@ -1,4 +1,4 @@ -// { dg-do compile } +// { dg-do compile { target c++11 } } // Copyright (C) 2017 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc b/libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc index 99a8b84..5f2bf30 100644 --- a/libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc +++ b/libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc @@ -1,4 +1,4 @@ -// { dg-do compile } +// { dg-do compile { target c++11 } } // Copyright (C) 2017 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc b/libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc index 0d6e174..76785be 100644 --- a/libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc +++ b/libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc @@ -1,4 +1,4 @@ -// { dg-do compile } +// { dg-do compile { target c++11 } } // Copyright (C) 2017 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc b/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc index f6738f1..7d34ff2 100644 --- a/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc +++ b/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc @@ -25,7 +25,7 @@ void test01() { int i[] = { 1, 2, 3, 4 }; - std::function<bool(int, int)> f = std::less<>{}; + std::function<bool(int, int)> f = std::less<int>{}; // If this uses a moved-from std::function we'll get an exception: std::make_heap(std::begin(i), std::end(i), f); std::sort_heap(std::begin(i), std::end(i), f);