diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-05-08 17:13:38 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-05-08 17:13:38 +0000 |
commit | 497d987dcafcef11224e9e027b9479a20dd01702 (patch) | |
tree | d3eba956ae78c87eda95355f4660119df9941a3a /libstdc++-v3 | |
parent | 5f0b0ddf7eccdd4b065a74bf0982508c3da88491 (diff) | |
download | gcc-497d987dcafcef11224e9e027b9479a20dd01702.tar.gz |
Tweak static assertions in std::optional
* include/std/optional: Use a separate static_assert per condition.
* testsuite/20_util/optional/cons/value_neg.cc: Update dg-error line
numbers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@247748 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/std/optional | 17 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc | 6 |
3 files changed, 14 insertions, 13 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b5a67190e79..f2859399266 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,9 @@ 2017-05-08 Jonathan Wakely <jwakely@redhat.com> + * include/std/optional: Use a separate static_assert per condition. + * testsuite/20_util/optional/cons/value_neg.cc: Update dg-error line + numbers. + * doc/xml/manual/mt_allocator.xml: Clarify deallocation behaviour. * doc/html/*: Regenerate. diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional index 17241204abb..5aa926f0cfd 100644 --- a/libstdc++-v3/include/std/optional +++ b/libstdc++-v3/include/std/optional @@ -462,10 +462,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Unique tag type. optional<_Tp>> { - static_assert(__and_<__not_<is_same<remove_cv_t<_Tp>, nullopt_t>>, - __not_<is_same<remove_cv_t<_Tp>, in_place_t>>, - __not_<is_reference<_Tp>>>(), - "Invalid instantiation of optional<T>"); + static_assert(!is_same_v<remove_cv_t<_Tp>, nullopt_t>); + static_assert(!is_same_v<remove_cv_t<_Tp>, in_place_t>); + static_assert(!is_reference_v<_Tp>); private: using _Base = _Optional_base<_Tp>; @@ -756,9 +755,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr _Tp value_or(_Up&& __u) const& { - static_assert(__and_<is_copy_constructible<_Tp>, - is_convertible<_Up&&, _Tp>>(), - "Cannot return value"); + static_assert(is_copy_constructible_v<_Tp>); + static_assert(is_convertible_v<_Up&&, _Tp>); return this->_M_is_engaged() ? this->_M_get() @@ -769,9 +767,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Tp value_or(_Up&& __u) && { - static_assert(__and_<is_move_constructible<_Tp>, - is_convertible<_Up&&, _Tp>>(), - "Cannot return value" ); + static_assert(is_move_constructible_v<_Tp>); + static_assert(is_convertible_v<_Up&&, _Tp>); return this->_M_is_engaged() ? std::move(this->_M_get()) diff --git a/libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc b/libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc index 87907f96d13..5abe26e433d 100644 --- a/libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc +++ b/libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc @@ -37,8 +37,8 @@ int main() std::optional<std::unique_ptr<int>> oup2 = new int; // { dg-error "conversion" } struct U { explicit U(std::in_place_t); }; std::optional<U> ou(std::in_place); // { dg-error "no matching" } - // { dg-error "no type" "" { target { *-*-* } } 488 } - // { dg-error "no type" "" { target { *-*-* } } 498 } - // { dg-error "no type" "" { target { *-*-* } } 555 } + // { dg-error "no type" "" { target { *-*-* } } 487 } + // { dg-error "no type" "" { target { *-*-* } } 497 } + // { dg-error "no type" "" { target { *-*-* } } 554 } } } |