aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2019-06-14 15:03:20 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2019-06-14 15:03:20 +0100
commitcc28d23496b014ae413a03923404fd45b1ba5f28 (patch)
tree316fb18aeb472601a96ff9b3889ea7849428ad42
parentc68c4c982d6f762bd1938b90f6cb5f210d509939 (diff)
downloadgcc-cc28d23496b014ae413a03923404fd45b1ba5f28.zip
gcc-cc28d23496b014ae413a03923404fd45b1ba5f28.tar.gz
gcc-cc28d23496b014ae413a03923404fd45b1ba5f28.tar.bz2
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<From, To, false>) (__is_nt_convertible_helper<From, To, false>, __nonesuch): Likewise. From-SVN: r272289
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/experimental/type_traits3
-rw-r--r--libstdc++-v3/include/std/type_traits10
3 files changed, 17 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1c63033..9eb70fc 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
2019-06-14 Jonathan Wakely <jwakely@redhat.com>
+ * include/experimental/type_traits (experimental::nonesuch): Use
+ pragma to disable -Wctor-dtor-privacy warnings.
+ * include/std/type_traits (__is_convertible_helper<From, To, false>)
+ (__is_nt_convertible_helper<From, To, false>, __nonesuch): Likewise.
+
* include/std/version (__cpp_lib_bind_front): Add missing macro.
2019-06-12 Jonathan Wakely <jwakely@redhat.com>
diff --git a/libstdc++-v3/include/experimental/type_traits b/libstdc++-v3/include/experimental/type_traits
index 2403bd2..464c8d2 100644
--- a/libstdc++-v3/include/experimental/type_traits
+++ b/libstdc++-v3/include/experimental/type_traits
@@ -227,6 +227,8 @@ inline namespace fundamentals_v2
template<typename...> 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<template<typename...> class _Op, typename... _Args>
using is_detected
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index e53d3c8..7d4deb1 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<typename _From, typename _To>
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<typename _From, typename _To>
@@ -1481,6 +1483,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: is_void<_To>
{ };
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
template<typename _From, typename _To>
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<typename _From, typename _To>
@@ -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