#pragma once namespace quadtree { template class Vector2 { public: T x; T y; constexpr Vector2(T X = 0, T Y = 0) noexcept : x(X), y(Y) { } constexpr Vector2& operator+=(const Vector2& other) noexcept { x += other.x; y += other.y; return *this; } constexpr Vector2& operator/=(T t) noexcept { x /= t; y /= t; return *this; } }; template constexpr Vector2 operator+(Vector2 lhs, const Vector2& rhs) noexcept { lhs += rhs; return lhs; } template constexpr Vector2 operator/(Vector2 vec, T t) noexcept { vec /= t; return vec; } }