Robert Jacques:

> The proposed unpacking syntax, IIRC, was:
> 
> (double a, int b) = fun();
> 
> which lowered to:
> 
> auto __tup = fun();
> double x = __tup[0];  // __tup[0] has a type that is implicitly convertible 
> to double
> int y = __tup[1];  // ditto
> 
> Why not instead lower to:
> 
> auto __tup = fun();
> double x = __tup.tupleof[0];
> int y = __tup.tupleof[1];

The advange of lowering it to:
> auto __tup = fun();
> double x = __tup[0]; 

Is that it works with this too:
int[2] foo() { return [10,20; }
auto (x,y) = foo();

This case is quite common.

Bye,
bearophile

Reply via email to