summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-08 17:13:38 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-08 17:13:38 +0000
commit497d987dcafcef11224e9e027b9479a20dd01702 (patch)
treed3eba956ae78c87eda95355f4660119df9941a3a /libstdc++-v3
parent5f0b0ddf7eccdd4b065a74bf0982508c3da88491 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--libstdc++-v3/include/std/optional17
-rw-r--r--libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc6
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 }
}
}