Implement LWG 2744 and LWG 2754.
commit4e2d3fab6dbb00bce42a2acfb1db50b6b9215f3b
authorville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Aug 2016 15:06:09 +0000 (15 15:06 +0000)
committerville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Aug 2016 15:06:09 +0000 (15 15:06 +0000)
treeda46540d961190d68c5cffdb9214cf0013f267ab
parent6ce66d3894052b9f06518c179da75c9cd3fd8f5a
Implement LWG 2744 and LWG 2754.
* include/std/any (any(ValueType&&)): Constrain with __is_in_place_type.
(any(in_place_type_t<_ValueType>, _Args&&...)): Use _Decay.
(any(in_place_type_t<_ValueType>, initializer_list<_Up>, _Args&&...)):
Likewise.
(emplace(_Args&&...)): Likewise.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* include/std/utility: (__is_in_place_type_impl): New.
(__is_in_place_type): Likewise.
* testsuite/20_util/any/assign/emplace.cc: Add tests for decaying
emplace.
* testsuite/20_util/any/cons/in_place.cc: Add tests for decaying
in_place constructor.
* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
* testsuite/20_util/any/requirements.cc: Add a test for
in_place-constructing a non-default-constructible type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239482 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/any
libstdc++-v3/include/std/utility
libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
libstdc++-v3/testsuite/20_util/any/requirements.cc