Implement LWG 2857, {variant,optional,any}::emplace should
commit87da09997729b9611d4096cb115d5d8c21956f62
authorville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Mar 2017 23:13:20 +0000 (15 23:13 +0000)
committerville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Mar 2017 23:13:20 +0000 (15 23:13 +0000)
treef3ea96ef5ad56196f35709d8914b3629291eb9a9
parent44cafa9a203cb0a4928bd1febc8e46b45c86c90e
Implement LWG 2857, {variant,optional,any}::emplace should
return the constructed value.
* include/std/any (emplace(_Args&&...)): Change the return type and
return a reference to the constructed value.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* include/std/optional (emplace(_Args&&...)): Likewise.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* include/std/variant (emplace<_Tp>(_Args&&...)): Likewise.
(emplace<_Tp>(initializer_list<_Up>, _Args&&...)): Likewise.
(emplace<_Np>(_Args&&...)): Likewise.
(emplace<_Np>(initializer_list<_Up>, _Args&&...)): Likewise.
* testsuite/20_util/any/assign/emplace.cc: Add tests for
checking the return value of emplace.
* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
* testsuite/20_util/optional/assignment/6.cc: Add tests for
checking the return value of emplace.
* testsuite/20_util/variant/run.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@246182 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/any
libstdc++-v3/include/std/optional
libstdc++-v3/include/std/variant
libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
libstdc++-v3/testsuite/20_util/optional/assignment/6.cc
libstdc++-v3/testsuite/20_util/variant/run.cc