Use constexpr addressof in optional, SFINAE housekeeping
commitd83309956c4ce5704d9b48961e964b7bb0334386
authorville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Nov 2016 15:30:37 +0000 (14 15:30 +0000)
committerville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Nov 2016 15:30:37 +0000 (14 15:30 +0000)
treeb6dd36de2d9a0d5e2dc72de0b865b77103b97e55
parent5dc46e164993bbf658f61069823a1b37a2d715eb
Use constexpr addressof in optional, SFINAE housekeeping
for any, optional and tuple.
* include/std/any (__do_emplace(_Args&&...)): New.
(__do_emplace(initializer_list<_Up>, _Args&&...)): Likewise.
(__any_constructible): Likewise.
(__any_constructible_t): Use __any_constructible.
(operator=(_ValueType&&)): SFINAE in the return type.
(emplace(_Args&&...)): Likewise.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* include/std/optional (_Has_addressof_mem): Remove.
(_Has_addressof_free): Likewise.
(_Has_addressof): Likewise.
(__constexpr_addressof(_Tp&)): Likewise.
(operator->): Use std::__addressof.
* include/std/tuple (operator=(const tuple<_UElements...>&)):
SFINAE in return type.
(operator=(tuple<_UElements...>&&)): Likewise.
* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.

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