void
and reference type alternatives in variant
, variant<>
and
index()
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: