#include <iostream>
using namespace std;
struct Matrix {
struct Adder {
Matrix& m;
int index;
Adder(Matrix& m) : m(m), index(1) {}
Adder& operator,(float value) {
m.set(index++, value);
return *this;
}
};
void set(int index, float value) {
cout << "Matrix[" << index << "] = " << value << endl;
}
Adder operator<<(float value) {
set(0, value);
return Adder(*this);
}
};
int main() {
Matrix mat;
mat << 5, 10, 15, 20;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE1hdHJpeCB7CiAgICAKICAgIHN0cnVjdCBBZGRlciB7CiAgICAgICAgTWF0cml4JiBtOwogICAgICAgIGludCBpbmRleDsKICAgIAogICAgICAgIEFkZGVyKE1hdHJpeCYgbSkgOiBtKG0pLCBpbmRleCgxKSB7fQogICAgCiAgICAgICAgQWRkZXImIG9wZXJhdG9yLChmbG9hdCB2YWx1ZSkgewogICAgICAgICAgICBtLnNldChpbmRleCsrLCB2YWx1ZSk7CiAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CiAgICAgICAgCiAgICB9OwogICAgCiAgICB2b2lkIHNldChpbnQgaW5kZXgsIGZsb2F0IHZhbHVlKSB7CiAgICAgICAgY291dCA8PCAiTWF0cml4WyIgPDwgaW5kZXggPDwgIl0gPSAiIDw8IHZhbHVlIDw8IGVuZGw7CiAgICB9CiAgICAKICAgIEFkZGVyIG9wZXJhdG9yPDwoZmxvYXQgdmFsdWUpIHsKICAgICAgICBzZXQoMCwgdmFsdWUpOwogICAgICAgIHJldHVybiBBZGRlcigqdGhpcyk7CiAgICB9CiAgICAKfTsKCgppbnQgbWFpbigpIHsKICAgIE1hdHJpeCBtYXQ7CiAgICBtYXQgPDwgNSwgMTAsIDE1LCAyMDsKICAgIAp9