Make optional conditionally trivially_{copy,move}_{constructible,assignable}
commitcee6e7adb00b1eb1e6e17b496020804f646e9eaa
authorville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Jan 2018 11:32:24 +0000 (15 11:32 +0000)
committerville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Jan 2018 11:32:24 +0000 (15 11:32 +0000)
treec070209d003e7d226cbc6a6f84721259e9368bc1
parent5d464bd1d767c557614b30155e2ac1f8a96d8e35
Make optional conditionally trivially_{copy,move}_{constructible,assignable}

* include/std/optional (_Optional_payload): Fix the comment in
the class head and turn into a primary and one specialization.
(_Optional_payload::_M_engaged): Strike the NSDMI.
(_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
New.
(_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
Likewise.
(_Optional_payload<_Tp, false>::_M_get): Likewise.
(_Optional_payload<_Tp, false>::_M_reset): Likewise.
(_Optional_base_impl): Likewise.
(_Optional_base): Turn into a primary and three specializations.
(optional(nullopt)): Change the base init.
* testsuite/20_util/optional/assignment/8.cc: New.
* testsuite/20_util/optional/cons/trivial.cc: Likewise.
* testsuite/20_util/optional/cons/value_neg.cc: Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256694 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/optional
libstdc++-v3/testsuite/20_util/optional/assignment/8.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/optional/cons/trivial.cc [copied from libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc with 50% similarity]
libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc