//======================================================================= // Copyright Baptiste Wicht 2013-2018. // Distributed under the terms of the MIT License. // (See accompanying file LICENSE or copy at // http://www.opensource.org/licenses/MIT) //======================================================================= #ifndef UTILITY_H #define UTILITY_H #include "type_traits.hpp" namespace std { template constexpr typename remove_reference::type&& move(T&& t){ return static_cast::type&&>(t); } template constexpr T&& forward(typename remove_reference::type& t ){ return static_cast(t); } template constexpr T&& forward(typename remove_reference::type&& t ){ return static_cast(t); } template void swap (T& a, T& b){ T c(std::move(a)); a = std::move(b); b = std::move(c); } template typename std::add_rvalue_reference::type declval(); } //end of namespace std #endif