プリプロセッサで簡易生成
vec::value のテンプレートの特殊化をプリプロセッサで簡易生成する為のコード。
DirectX とかの定義が楽になる…か?
#include#include #include "vec/type_traits/value.hpp" #include "vec/preprocessor/make_type_traits_value.hpp" /** D3DVECTOR の特殊化 */ KMT_EX_PP_MATH_VEC_MAKE_TYPE_TRAITS_VALUE(D3DVECTOR, float); /** 自前ベクトル */ struct my_vec{ double x, y, z; }; KMT_EX_PP_MATH_VEC_MAKE_TYPE_TRAITS_VALUE(my_vec, double); #include "vec/preprocessor/undef_make_type_traits_value.hpp" // #undef namespace vec = kmt_ex::math::vec; int main(){ std::cout << typeid(vec::value ::type).name() << "\n"; // float std::cout << typeid(vec::value ::type).name() << "\n"; // double getchar(); return 0; }
/** vec::value のテンプレートの特殊化の簡易生成を行う ※内部で namespace でくくっているので、 グローバル空間での定義を行う */ #ifndef KMT_EX_PP_MATH_VEC_MAKE_TYPE_TRAITS_VALUE #define KMT_EX_PP_MATH_VEC_MAKE_TYPE_TRAITS_VALUE(class_t, value_t) \ namespace kmt_ex{ namespace math{ namespace vec{ \ \ template<> \ struct value{ \ typedef value_t type; \ }; \ \ }; }; }; // namespace kmt_ex{ namespace math{ namespace vec{