[PATCH] libstdc++: std::variant doesn't like types with a defaulted virtual destructor [PR95915]

Jonathan Wakely jwakely@redhat.com
Fri Jun 26 18:20:08 GMT 2020


On 26/06/20 19:12 +0300, Ville Voutilainen via Libstdc++ wrote:
>This patch also deprecates std::is_literal_type.
>
>2020-06-26  Ville Voutilainen  <ville.voutilainen@gmail.com>
>
>    PR libstdc++/95915
>    * include/std/type_traits (is_literal_type, is_literal_type_v):
>    Deprecate in C++17.
>    * include/std/variant (_Uninitialized):
>    Adjust the condition and the comment.
>    * testsuite/20_util/is_literal_type/deprecated-1z.cc: New.
>    * testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc:
>    Adjust.
>    * testsuite/20_util/is_literal_type/requirements/typedefs.cc: Likewise.
>    * testsuite/20_util/is_literal_type/value.cc: Likewise.
>    * testsuite/20_util/variant/95915.cc: New.
>    * testsuite/20_util/variant/compile.cc: Add new test.

+
>+// { dg-prune-output "declared here" }
>diff --git a/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
>index d0a20f3cf4e..d9c57bb8ef4 100644
>--- a/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
>+++ b/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
>@@ -1,3 +1,4 @@
>+// { dg-options "-Wno-deprecated" }

For these three tests I think this would be slightly better:

// { dg-additional-options "-Wno-deprecated" { target c++17 } }

That way we only ignore the warning when actually needed.

> // { dg-do compile { target c++11 } }
> // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
> 
>diff --git a/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
>index 9b7ae894725..24f508805f2 100644
>--- a/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
>+++ b/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
>@@ -1,3 +1,4 @@
>+// { dg-options "-Wno-deprecated" }
> // { dg-do compile { target c++11 } }
> 
> // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
>diff --git a/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc b/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
>index a6624774ef0..3bd6fe373f7 100644
>--- a/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
>+++ b/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
>@@ -1,3 +1,4 @@
>+// { dg-options "-Wno-deprecated" }
> // { dg-do compile { target c++11 } }
> 
> // 2010-03-23  Paolo Carlini  <paolo.carlini@oracle.com>

OK for master and gcc-10 with that change. Thanks!




More information about the Gcc-patches mailing list