#ifndef OPP_UTILITY_H #define OPP_UTILITY_H namespace opp { template inline T && move(T & m) { return (T &&)m; } template inline void swap(T & x, T & y) { T t(x); x = y; y = move(t); } template struct pair { T1 first; T2 second; pair(T1 && t1, T2 && t2) : first(t1), second(t2) {} }; template constexpr pair make_pair(T1 && t1, T2 && t2) { return pair(t1, t2); } } #endif