This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/77288] Std::experimental::optional::operator= implementation is broken in gcc 6.1


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]