r239593 - in /trunk/libstdc++-v3: ChangeLog inc...

ville@gcc.gnu.org ville@gcc.gnu.org
Thu Aug 18 20:33:00 GMT 2016


Author: ville
Date: Thu Aug 18 20:33:57 2016
New Revision: 239593

URL: https://gcc.gnu.org/viewcvs?rev=239593&root=gcc&view=rev
Log:
	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.

Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/std/optional
    trunk/libstdc++-v3/testsuite/20_util/optional/assignment/5.cc
    trunk/libstdc++-v3/testsuite/20_util/optional/cons/value.cc



More information about the Libstdc++-cvs mailing list