9 Jan
2015
9 Jan
'15
6:16 p.m.
Eelis wrote:
Really, variant<> should have been index-based all along, so that you can just do get<0> and get<1> on a variant<T, T> (or a variant<A, B> where A might be B) without losing information.
Adding get<I> to variant is trivial - it already stores the index and exposes it in which(). But you can't store anything into variant<T,T> because constructors and assignment dispatch by type. We could in principle add something like variant<T,T> v( index<0>, t ); and v.assign( index<0>, t ); or variant<T,T> v( _1, t ); v.assign( _1, t ); but v = t; is never going to work. The best we could do is v = { _1, t };