Because of the C "comma operator". In C, the comma operator evaluates both operands and discards the first result. It's an ancient hack used mostly with preprocessor defines.
In C and C++,
foo(a,b)
is a call with two arguments. But foo[a,b]
invokes the comma operator and presents one value to "[]" You have to dig through the C++ specification to find this.So I asked the question, could anyone find an example of the comma operator used in C or C++ inside square brackets in any production code. I couldn't. I got someone at IBM Almaden to search IBM's code archive and they couldn't. But there was the concern that somewhere, someone had used that misfeature for something.
So, no 2D array syntax for you.