DIP1001: DoExpression
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Tue Sep 6 10:01:28 PDT 2016
On 06.09.2016 17:23, Steven Schveighoffer wrote:
> On 9/6/16 10:17 AM, Timon Gehr wrote:
>> On 06.09.2016 16:12, Steven Schveighoffer wrote:
>>>
>>> I'm not sure I agree with the general principal of the DIP though. I've
>>> never liked comma expressions, and this seems like a waste of syntax.
>>> Won't tuples suffice here when they take over the syntax? e.g. (x, y,
>>> z)[$-1]
>>
>> (Does not work if x, y or z is of type 'void'.)
>
> Let's first stipulate that z cannot be void here, as the context is you
> want to evaluate to the result of some expression.
>
> But why wouldn't a tuple of type (void, void, T) be valid?
Because 'void' is special. (Language design error imported from C.)
struct S{
void x; // does not work.
}
There can be no field (or variables) of type 'void'. (void,void,T) has
two fields of type 'void'.
Just fixing the limitations is also not really possible, as e.g. void*
and void[] exploit that 'void' is special and have a non-compositional
meaning.
> It could also auto-reduce to just (T).
>
> -Steve
That would fix the limitation, but it is also quite surprising behaviour.
More information about the Digitalmars-d
mailing list