#include <iostream>
#include <vector>
template< typename Number >
class Vector2
{
Number x;
Number y;
public:
Vector2( Number x, Number y )
: x ( x )
, y ( y )
{ }
};
template< typename Number >
class Matrix2x2
{
Vector2< Number > mat[ 2 ];
public:
Matrix2x2( Number xx, Number xy, Number yx, Number yy )
: mat { { xx, xy }, { yx, yy } }
{ }
Matrix2x2( Vector2< Number > firstLine, Vector2< Number > secondLine )
: mat { firstLine, secondLine }
{ }
};
int main() {
std::vector< Matrix2x2< float > > vec1 = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };
std::vector< Matrix2x2< float > > vec2 = { { { 1, 2 }
, { 3, 4 } }
, { { 5, 6 }
, { 7, 8 } } };
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGU8IHR5cGVuYW1lIE51bWJlciA+CmNsYXNzIFZlY3RvcjIKewoJCU51bWJlciB4OwoJCU51bWJlciB5OwoJcHVibGljOgoJCVZlY3RvcjIoIE51bWJlciB4LCBOdW1iZXIgeSApCgkJOiB4ICggeCApCgkJLCB5ICggeSApCgkJeyB9Cn07Cgp0ZW1wbGF0ZTwgdHlwZW5hbWUgTnVtYmVyID4KY2xhc3MgTWF0cml4MngyCnsKCQlWZWN0b3IyPCBOdW1iZXIgPiBtYXRbIDIgXTsKCXB1YmxpYzoKCQlNYXRyaXgyeDIoIE51bWJlciB4eCwgTnVtYmVyIHh5LCBOdW1iZXIgeXgsIE51bWJlciB5eSApCgkJOiBtYXQgeyB7IHh4LCB4eSB9LCB7IHl4LCB5eSB9IH0KCQl7IH0KCQkKCQlNYXRyaXgyeDIoIFZlY3RvcjI8IE51bWJlciA+IGZpcnN0TGluZSwgVmVjdG9yMjwgTnVtYmVyID4gc2Vjb25kTGluZSApCgkJOiBtYXQgeyBmaXJzdExpbmUsIHNlY29uZExpbmUgfQoJCXsgfQp9OwoKaW50IG1haW4oKSB7CglzdGQ6OnZlY3RvcjwgTWF0cml4MngyPCBmbG9hdCA+ID4gdmVjMSA9IHsgeyAxLCAyLCAzLCA0IH0sIHsgNSwgNiwgNywgOCB9IH07CgkKCXN0ZDo6dmVjdG9yPCBNYXRyaXgyeDI8IGZsb2F0ID4gPiB2ZWMyID0geyB7IHsgMSwgMiB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB7IDMsIDQgfSB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgeyB7IDUsIDYgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgeyA3LCA4IH0gfSB9OwoJICAKCXJldHVybiAwOwp9