Title
void and reference type alternatives in variant, variant<> and index()
Status
resolved
Section
[variant][variant.variant][variant.ctor]
Submitter
Switzerland

Created on 2016-11-10.00:00:00 last changed 97 months ago

Messages

Date: 2017-02-02.00:41:18

[ Issues Telecon 16-Dec-2016 ]

Resolved by the adoption of P0501R0.

Date: 2016-11-10.00:00:00

Addresses CH 3, CH 4, CH 5, CH 6, CH 8

  1. variant allows reference types as alternatives; optional explicitly forbids to be instantiated for reference types. This is inconsistent.

  2. variant<int, void> should be as usable as variant<int>.

  3. variant<> should not have an index() function.

  4. Clarify the intended behavior of variant for alternative types that are references.

  5. Clarify variant construction.

Proposed change:

  1. Consider allowing reference types for both or none.

  2. Consider specifying a specialization for variant<> like:

    template<> 
    class variant<> 
    { 
    public: 
      variant() = delete; 
      variant(const variant&) = delete; 
      variant& operator=(variant const&) = delete;
    };
    
  3. Add a respective note.

  4. Add a note that variant<> cannot be constructed.

History
Date User Action Args
2016-12-16 20:56:38adminsetmessages: + msg8736
2016-12-16 20:56:38adminsetstatus: new -> resolved
2016-11-10 00:00:00admincreate