This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.
Section: 22.6 [variant], 22.6.3 [variant.variant], 22.6.3.2 [variant.ctor] Status: Resolved Submitter: Switzerland Opened: 2016-11-10 Last modified: 2020-09-06
Priority: Not Prioritized
View all issues with Resolved status.
Discussion:
Addresses CH 3, CH 4, CH 5, CH 6, CH 8
variant allows reference types as alternatives; optional explicitly forbids to be instantiated for reference types. This is inconsistent.
variant<int, void> should be as usable as variant<int>.
variant<> should not have an index() function.
Clarify the intended behavior of variant for alternative types that are references.
Clarify variant construction.
Proposed change:
Consider allowing reference types for both or none.
—
Consider specifying a specialization for variant<> like:
template<> class variant<> { public: variant() = delete; variant(const variant&) = delete; variant& operator=(variant const&) = delete; };
Add a respective note.
Add a note that variant<> cannot be constructed.
[Issues Telecon 16-Dec-2016]
Resolved by the adoption of P0501R0.
Proposed resolution: