Use constexpr addressof in optional, SFINAE housekeeping for any, optional and tuple.
authorVille Voutilainen <ville.voutilainen@gmail.com>
Mon, 14 Nov 2016 15:30:37 +0000 (17:30 +0200)
committerVille Voutilainen <ville@gcc.gnu.org>
Mon, 14 Nov 2016 15:30:37 +0000 (17:30 +0200)
commitca9e949f2e0602a6e92f22b01e8d210f7c1ff448
treeb6dd36de2d9a0d5e2dc72de0b865b77103b97e55
parentebd9509a2db178fbdb20a8fdce7327a1bbdcee05
Use constexpr addressof in optional, SFINAE housekeeping for any, optional and tuple.

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.

From-SVN: r242390
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