From: Jonathan Wakely Date: Fri, 14 Jun 2019 14:03:20 +0000 (+0100) Subject: Disable -Wctor-dtor-privacy warnings for some standard types X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cc28d23496b014ae413a03923404fd45b1ba5f28;p=gcc.git Disable -Wctor-dtor-privacy warnings for some standard types * include/experimental/type_traits (experimental::nonesuch): Use pragma to disable -Wctor-dtor-privacy warnings. * include/std/type_traits (__is_convertible_helper) (__is_nt_convertible_helper, __nonesuch): Likewise. From-SVN: r272289 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1c63033b96b..9eb70fcf8b6 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,10 @@ 2019-06-14 Jonathan Wakely + * include/experimental/type_traits (experimental::nonesuch): Use + pragma to disable -Wctor-dtor-privacy warnings. + * include/std/type_traits (__is_convertible_helper) + (__is_nt_convertible_helper, __nonesuch): Likewise. + * include/std/version (__cpp_lib_bind_front): Add missing macro. 2019-06-12 Jonathan Wakely diff --git a/libstdc++-v3/include/experimental/type_traits b/libstdc++-v3/include/experimental/type_traits index 2403bd24223..464c8d2f4bf 100644 --- a/libstdc++-v3/include/experimental/type_traits +++ b/libstdc++-v3/include/experimental/type_traits @@ -227,6 +227,8 @@ inline namespace fundamentals_v2 template using void_t = void; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wctor-dtor-privacy" struct __nonesuchbase {}; struct nonesuch : private __nonesuchbase { @@ -234,6 +236,7 @@ struct nonesuch : private __nonesuchbase nonesuch(nonesuch const&) = delete; void operator=(nonesuch const&) = delete; }; +#pragma GCC diagnostic pop template class _Op, typename... _Args> using is_detected diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index e53d3c8d535..7d4deb156a1 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -1448,6 +1448,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef typename is_void<_To>::type type; }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wctor-dtor-privacy" template class __is_convertible_helper<_From, _To, false> { @@ -1466,7 +1468,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION public: typedef decltype(__test<_From, _To>(0)) type; }; - +#pragma GCC diagnostic pop /// is_convertible template @@ -1481,6 +1483,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : is_void<_To> { }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wctor-dtor-privacy" template class __is_nt_convertible_helper<_From, _To, false> { @@ -1499,6 +1503,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION public: using type = decltype(__test<_From, _To>(0)); }; +#pragma GCC diagnostic pop // is_nothrow_convertible for C++11 template @@ -2894,12 +2899,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __call_is_nothrow_<_Fn, _Args...>>::type { }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wctor-dtor-privacy" struct __nonesuchbase {}; struct __nonesuch : private __nonesuchbase { ~__nonesuch() = delete; __nonesuch(__nonesuch const&) = delete; void operator=(__nonesuch const&) = delete; }; +#pragma GCC diagnostic pop #if __cplusplus >= 201703L # define __cpp_lib_is_invocable 201703