On 03/12/19 20:30 -0500, JeanHeyd Meneide wrote:
This patch implements deprecate POD for the C++ Standard Library,

Thanks.

bringing libstdc++ that much closer to 2020 conformance 🎉!

N.B. adding the attribute is not required for conformance.

+#if defined(__DEPRECATED) && (__cplusplus > 201703L)
+# define _GLIBCXX20_DEPRECATED(...) [[deprecated(__VA_ARGS__)]]

Does this need to us __VA_ARGS__? Won't it always be a single
preprocessor token, specifically, a string literal?

+#else
+# define _GLIBCXX20_DEPRECATED(...)
+#endif
+
// Macros for ABI tag attributes.
#ifndef _GLIBCXX_ABI_TAG_CXX11
# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11")))
diff --git a/libstdc++-v3/include/std/type_traits 
b/libstdc++-v3/include/std/type_traits
index 8e787a994c3..91269d1bd02 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -685,10 +685,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        "template argument must be a complete class or an unbounded array");
    };

-  /// is_pod
+  /// is_pod (deprecated C++2a)
  // Could use is_standard_layout && is_trivial instead of the builtin.
  template<typename _Tp>
-    struct is_pod
+    struct
+    _GLIBCXX20_DEPRECATED("is_pod<Type> is deprecated in C++20: use is_standard_layout<Type> 
&& is_trivial<Type> instead")

That isn't a valid expression, it should probably say:

"use is_standard_layout_v<Type> && is_trivial_v<Type> instead"

i.e. recommend the variable templates.

I think I'd prefer "T" rather than "Type".

+// Copyright (C) 2010-2019 Free Software Foundation, Inc.

Just 2019 for the date. It's a new file.

Reply via email to