myxlib/src/myx/backports/cpp/helpers.hpp

47 lines
986 B
C++

#ifndef MYX_BACKPORTS_CPP_HELPERS_HPP_
#define MYX_BACKPORTS_CPP_HELPERS_HPP_
#pragma once
#if ( __cplusplus >= 201103L )
#include <memory>
#include <type_traits>
#endif
#if ( __cplusplus >= 201103L ) && ( __cplusplus < 201402L )
namespace std
{
template< class T >
using underlying_type_t = typename std::underlying_type< T >::type;
template< typename T, typename ... Args >
std::unique_ptr< T > make_unique( Args&&... args )
{
return( std::unique_ptr< T >( new T( std::forward< Args >( args )... ) ) );
}
} // namespace std
#endif
#if ( ( __cplusplus >= 201103L ) && ( __cplusplus < 201402L ) ) || \
( ( __cplusplus >= 201402L ) && ( __cplusplus < 201702L ) && defined( __STRICT_ANSI__ ) )
namespace std
{
template< typename ... Ts > struct make_void { typedef void type; };
#ifndef __cpp_lib_void_t
template< typename ... Ts > using void_t = typename make_void< Ts... >::type;
#endif
} // namespace std
#endif
#endif // ifndef MYX_BACKPORTS_CPP_HELPERS_HPP_