From: Jonathan Wakely Date: Fri, 24 Sep 2021 13:32:34 +0000 (+0100) Subject: libstdc++: Skip container adaptor tests that fail concept checks X-Git-Tag: basepoints/gcc-13~4372 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=07fbdd7bda1166ab2722dbeb4fd3c6b8558b324b;p=thirdparty%2Fgcc.git libstdc++: Skip container adaptor tests that fail concept checks As an extension, our container adaptors SFINAE away the default constructor if the adapted sequence container is not default constructible. When _GLIBCXX_CONCEPT_CHECKS is defined we enforce that the sequence is default constructible, so the tests for the extension fail. This disables the relevant parts of the tests. Signed-off-by: Jonathan Wakely libstdc++-v3/ChangeLog: * testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc: Do not check non-default constructible sequences when _GLIBCXX_CONCEPT_CHECKS is defined. * testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc: Likewise. * testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc: Likewise. * testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc: Likewise. --- diff --git a/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc index d1e18f879df9..a425001612d7 100644 --- a/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc +++ b/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc @@ -24,12 +24,15 @@ template class std::priority_queue; -struct NonDefaultConstructible : std::vector { - NonDefaultConstructible(int) { } -}; struct Cmp : std::less { Cmp(int) { } }; +template class std::priority_queue, Cmp>; + +#ifndef _GLIBCXX_CONCEPT_CHECKS +struct NonDefaultConstructible : std::vector { + NonDefaultConstructible(int) { } +}; template class std::priority_queue; template class std::priority_queue; -template class std::priority_queue, Cmp>; +#endif diff --git a/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc b/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc index def9259dc6b5..28549f5246e7 100644 --- a/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc +++ b/libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc @@ -24,12 +24,15 @@ template class std::priority_queue; -struct NonDefaultConstructible : std::vector { - NonDefaultConstructible(int) { } -}; struct Cmp : std::less { Cmp(int) { } }; +template class std::priority_queue, Cmp>; + +#ifndef _GLIBCXX_CONCEPT_CHECKS +struct NonDefaultConstructible : std::vector { + NonDefaultConstructible(int) { } +}; template class std::priority_queue; template class std::priority_queue; -template class std::priority_queue, Cmp>; +#endif diff --git a/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc index b737a15a30bb..3b9090cb945a 100644 --- a/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc +++ b/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc @@ -24,7 +24,9 @@ template class std::queue; +#ifndef _GLIBCXX_CONCEPT_CHECKS struct NonDefaultConstructible : std::deque { NonDefaultConstructible(int) { } }; template class std::queue; +#endif diff --git a/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc b/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc index 2e2d6a457dd4..1cc4410b4b6f 100644 --- a/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc +++ b/libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc @@ -24,7 +24,9 @@ template class std::queue; +#ifndef _GLIBCXX_CONCEPT_CHECKS struct NonDefaultConstructible : std::deque { NonDefaultConstructible(int) { } }; template class std::queue; +#endif diff --git a/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc index 8002099edcda..82e8e8521505 100644 --- a/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc +++ b/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc @@ -24,7 +24,9 @@ template class std::stack; +#ifndef _GLIBCXX_CONCEPT_CHECKS struct NonDefaultConstructible : std::deque { NonDefaultConstructible(int) { } }; template class std::stack; +#endif diff --git a/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc b/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc index c66c59796069..8ff20fc903f4 100644 --- a/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc +++ b/libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc @@ -24,7 +24,9 @@ template class std::stack; +#ifndef _GLIBCXX_CONCEPT_CHECKS struct NonDefaultConstructible : std::deque { NonDefaultConstructible(int) { } }; template class std::stack; +#endif