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: