プリプロセッサシンボルをMetafunctionにする

  • これは間違っているような気もするしマクロをなるべく避ける観点からは正しい気もする
  • 個人的にはソースがきれいになったと感じた場合もあります

[]namespace[] []pstade[][] {[]


[]template[][]< [][]class[][] = [][]boost[][]::[][]mpl[][]::[][]void_[][] >[]
[]struct[] []is_debug[][] :[]
[]#if[][] defined(_DEBUG)[]
[]boost[][]::[][]mpl[][]::[][]true_[]
[]#else[]
[]boost[][]::[][]mpl[][]::[][]false_[]
[]#endif[]
[]{ };[]


[]} [][]// namespace pstade[]


[]#if[][] defined(_DEBUG)[]
[]BOOST_MPL_ASSERT[][](( [][]pstade[][]::[][]is_debug[][]<> ));[]
[]#else[]
[]BOOST_MPL_ASSERT_NOT[][](( [][]pstade[][]::[][]is_debug[][]<> ));[]
[]#endif[]