#include <iostream>
template <typename Type>
struct Vector2
{
Type x, y;
};
using Vector2F = Vector2<float>;
using Vector2U = Vector2<unsigned int>;
template <typename LhsType, typename RhsType>
bool operator == (LhsType lhs, RhsType rhs)
{
return lhs.x == rhs.x && lhs.y == rhs.y;
}
int main()
{
Vector2F myVecF { 1.0f, 2.0f };
Vector2U myVecU { 1, 2 };
std::cout << (myVecF == myVecU) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+CnN0cnVjdCBWZWN0b3IyCnsKCVR5cGUgeCwgeTsKfTsKCnVzaW5nIFZlY3RvcjJGID0gVmVjdG9yMjxmbG9hdD47CnVzaW5nIFZlY3RvcjJVID0gVmVjdG9yMjx1bnNpZ25lZCBpbnQ+OwoKdGVtcGxhdGUgPHR5cGVuYW1lIExoc1R5cGUsIHR5cGVuYW1lIFJoc1R5cGU+CmJvb2wgb3BlcmF0b3IgPT0gKExoc1R5cGUgbGhzLCBSaHNUeXBlIHJocykKewoJcmV0dXJuIGxocy54ID09IHJocy54ICYmIGxocy55ID09IHJocy55Owp9CgppbnQgbWFpbigpCnsKCVZlY3RvcjJGIG15VmVjRiB7IDEuMGYsIDIuMGYgfTsKCVZlY3RvcjJVIG15VmVjVSB7IDEsIDIgfTsKCQoJc3RkOjpjb3V0IDw8IChteVZlY0YgPT0gbXlWZWNVKSA8PCBzdGQ6OmVuZGw7CgkKfQ==