#pragma once #include namespace meta { template struct comparable { bool operator>(const T&) const; bool operator<=(const T&) const; bool operator>=(const T&) const; bool operator==(const T&) const; bool operator!=(const T&) const; private: T& me(); const T& me() const; }; }