aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVille Voutilainen <ville.voutilainen@gmail.com>2016-08-18 23:33:57 +0300
committerVille Voutilainen <ville@gcc.gnu.org>2016-08-18 23:33:57 +0300
commita577f786b60475f827df78fedb98eeb2e83f53e9 (patch)
treeced23a4340f17d7cbce9d65395db42f6d9c381c8 /gcc
parent197c757cb11681a6ff6df1491ebfde4f5a392627 (diff)
downloadgcc-a577f786b60475f827df78fedb98eeb2e83f53e9.zip
gcc-a577f786b60475f827df78fedb98eeb2e83f53e9.tar.gz
gcc-a577f786b60475f827df78fedb98eeb2e83f53e9.tar.bz2
Implement the latest proposed resolution of LWG 2756.
* include/std/optional (Optional_base(const _Tp&)) (Optional_base(_Tp&&), using _Base::_Base): Remove. (optional(nullopt_t)): New. (optional(_Up&&)): Invoke base directly with in_place rather than creating a temporary, add default template argument, change constraints. (optional(const optional<_Up>&)): Invoke base directly with in_place, remove unnecessary constraints. (optional(optional<_Up>&& __t)): Likewise. (optional(in_place_t, _Args&&...)): New. (optional(in_place_t, initializer_list<_Up>, _Args&&...)): Likewise. (operator=(_Up&&)): Add default template argument, change constraints. (operator=(const optional<_Up>&)): Put is_same first in the constraints. (operator=(optional<_Up>&&)): Likewise. * testsuite/20_util/optional/assignment/5.cc: Add a test to verify assignment from something that can't be perfect-forwarded. * testsuite/20_util/optional/cons/value.cc: Add tests to verify that a nested optional is disengaged when constructed from a disengaged element type, and to verify that assignments from an engaged element type engage the optional. From-SVN: r239593
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions