aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-08-03 20:10:06 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-08-03 20:10:06 +0100
commitc7fdbdcdbd9f2ea3393ff6b3714394fa3922ab09 (patch)
tree79a6fee4744e298c205cdd0a07507594751c8c63
parentf21f4463adb78df847273f328ac163461d4d1617 (diff)
downloadgcc-c7fdbdcdbd9f2ea3393ff6b3714394fa3922ab09.zip
gcc-c7fdbdcdbd9f2ea3393ff6b3714394fa3922ab09.tar.gz
gcc-c7fdbdcdbd9f2ea3393ff6b3714394fa3922ab09.tar.bz2
Define feature-test macro for std::enable_shared_from_this
* include/bits/shared_ptr_base.h (__cpp_lib_enable_shared_from_this): Define feature-test macro. * testsuite/20_util/enable_shared_from_this/members/reinit.cc: Test for the macro. From-SVN: r239094
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/shared_ptr_base.h1
-rw-r--r--libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc4
3 files changed, 10 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 2c23c4b..d116231 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
2016-08-03 Jonathan Wakely <jwakely@redhat.com>
+ * include/bits/shared_ptr_base.h (__cpp_lib_enable_shared_from_this):
+ Define feature-test macro.
+ * testsuite/20_util/enable_shared_from_this/members/reinit.cc: Test
+ for the macro.
+
* include/bits/shared_ptr.h (shared_ptr::weak_type): Define.
* include/bits/shared_ptr_base.h (__shared_ptr::weak_type): Define.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error.
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 93ce901..2698ba4 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -1472,6 +1472,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
void
_M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept
{
+#define __cpp_lib_enable_shared_from_this 201603
if (use_count() == 0)
{
_M_ptr = __ptr;
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
index 4ce23bc..1cf9148 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
@@ -20,6 +20,10 @@
#include <memory>
#include <testsuite_hooks.h>
+#if __cpp_lib_enable_shared_from_this < 201603
+# error "__cpp_lib_enable_shared_from_this < 201603"
+#endif
+
struct X : public std::enable_shared_from_this<X> { };
bool