CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_TYPETRAITS_HPP) 00007 #else 00008 #define XBASE_INCLUDED_TYPETRAITS_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <XBase/Compiler.hpp> 00012 00013 // type_traitsのインクルード 00014 #if defined(XBASE_COMPILER_MSVC) 00015 #include <type_traits> 00016 #endif 00017 00018 //------------------------------------------------------------ 00019 namespace XBase { 00021 00022 00023 struct TypeTraits 00024 { 00025 #if defined(XBASE_COMPILER_MSVC) 00026 template< typename T > 00027 struct IsPOD { enum { Value = ::std::tr1::is_pod< T >::value }; }; 00028 00029 template< typename T > 00030 struct IsScaler { enum { Value = ::std::tr1::is_scaler< T >::value }; }; 00031 #else 00032 // サポートしていないコンパイラでは常にtrueを返す。 00034 template< typename T > struct IsPOD { enum { Value = true }; }; 00036 template< typename T > struct IsScaler { enum { Value = true }; }; 00037 #endif 00038 }; 00040 } 00041 //------------------------------------------------------------ 00042 #endif 00043 // EOF