#ifndef __GBLIBCPP_UTILITY__ #define __GBLIBCPP_UTILITY__ #include namespace std { template constexpr remove_reference_t&& move(T&& val) { return static_cast&&>(val); } template constexpr T&& forward(remove_reference_t& val) { return static_cast(val); } template constexpr T&& forward(remove_reference_t&& val) { return static_cast(val); } template constexpr T exchange(T& dst, U&& val) { T tmp = move(dst); dst = forward(val); return tmp; } } // namespace std #endif