https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77288
--- Comment #8 from ville at gcc dot gnu.org --- Author: ville Date: Wed Sep 21 17:37:17 2016 New Revision: 240324 URL: https://gcc.gnu.org/viewcvs?rev=240324&root=gcc&view=rev Log: PR libstdc++/77288 * include/std/optional (__is_optional_impl, __is_optional): Remove. (__converts_from_optional, __assigns_from_optional): New. (optional(_Up&&)): Use is_same instead of __is_optional. (optional(const optional<_Up>&)): Constrain with __converts_from_optional. (optional(optional<_Up>&&)): Likewise. (operator=(_Up&&)): Use is_same instead of __is_optional, check is_same and is_scalar. (operator=(const optional<_Up>&)): Constrain with __converts_from_optional and __assigns_from_optional. (operator=(optional<_Up>&&)): Likewise. * testsuite/20_util/optional/77288.cc: New. * testsuite/20_util/optional/cons/value.cc: Adjust. Added: trunk/libstdc++-v3/testsuite/20_util/optional/77288.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/optional trunk/libstdc++-v3/testsuite/20_util/optional/cons/value.cc