From d326f2eeb75a092397a9db5e92c65a803f088a0a Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Tue, 18 Jan 2011 11:12:06 +0000 Subject: [PATCH] unique_ptr.h (default_delete<>::default_delete()): Declare defaulted per DR 1517. 2011-01-18 Paolo Carlini * include/bits/unique_ptr.h (default_delete<>::default_delete()): Declare defaulted per DR 1517. * testsuite/util/testsuite_common_types.h (constexpr_defaulted_default_constructible): Add. * testsuite/20_util/default_delete/cons/constexpr.cc: Use it. From-SVN: r168947 --- libstdc++-v3/ChangeLog | 8 ++++++++ libstdc++-v3/include/bits/unique_ptr.h | 4 ++-- .../20_util/default_delete/cons/constexpr.cc | 2 +- .../testsuite/util/testsuite_common_types.h | 20 ++++++++++++++++++- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 11ae49e5badd..856f10738e46 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2011-01-18 Paolo Carlini + + * include/bits/unique_ptr.h (default_delete<>::default_delete()): + Declare defaulted per DR 1517. + * testsuite/util/testsuite_common_types.h + (constexpr_defaulted_default_constructible): Add. + * testsuite/20_util/default_delete/cons/constexpr.cc: Use it. + 2011-01-17 Paolo Carlini * include/bits/stl_queue.h (queue<>::swap, priority_queue<>::swap): diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h index 0b00fcb5703e..12ced5cb537b 100644 --- a/libstdc++-v3/include/bits/unique_ptr.h +++ b/libstdc++-v3/include/bits/unique_ptr.h @@ -47,7 +47,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template struct default_delete { - constexpr default_delete() { } + constexpr default_delete() = default; template::value>::type> @@ -68,7 +68,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template struct default_delete<_Tp[]> { - constexpr default_delete() { } + constexpr default_delete() = default; void operator()(_Tp* __ptr) const diff --git a/libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc b/libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc index 091f1b6fc366..01fb284761e2 100644 --- a/libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc +++ b/libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc @@ -23,7 +23,7 @@ int main() { - __gnu_test::constexpr_default_constructible test; + __gnu_test::constexpr_defaulted_default_constructible test; test.operator()>(); return 0; } diff --git a/libstdc++-v3/testsuite/util/testsuite_common_types.h b/libstdc++-v3/testsuite/util/testsuite_common_types.h index 0960b7916c43..f597da2f0d74 100644 --- a/libstdc++-v3/testsuite/util/testsuite_common_types.h +++ b/libstdc++-v3/testsuite/util/testsuite_common_types.h @@ -644,7 +644,7 @@ namespace __gnu_test template::value> struct _Concept; - // NB: _Tp must be a literal type. + // NB: _Tp must be a literal type. // Have to have user-defined default ctor for this to work. template struct _Concept<_Tp, true> @@ -671,6 +671,24 @@ namespace __gnu_test } }; + // Generator to test defaulted default constructor. + struct constexpr_defaulted_default_constructible + { + template + void + operator()() + { + struct _Concept + { + void __constraint() + { constexpr _Tp __v __attribute__((unused)) { }; } + }; + + void (_Concept::*__x)() __attribute__((unused)) + = &_Concept::__constraint; + } + }; + struct constexpr_single_value_constructible { template