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.

Reply via email to