スレを勃てるまでもないC/C++の質問はここで 12at TECHスレを勃てるまでもないC/C++の質問はここで 12 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト550:デフォルトの名無しさん 09/08/21 13:39:28 typeid(*this).name() 551:デフォルトの名無しさん 09/08/21 13:41:00 template<int i> ~~ ここでi=1~8までならコンパイル可能 それ以外だとエラー(できればメッセージつきで) という具合にできますか? 552:549 09/08/21 13:50:47 >>550 ありがとう。 553:デフォルトの名無しさん 09/08/21 13:58:23 >>551 boost::mplとかテンプレートメタプログラミングとかBOOST_STATIC_ASSERTで検索。 554:デフォルトの名無しさん 09/08/21 14:16:09 >>551 #include <boost/mpl/int.hpp> #include <boost/mpl/and.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/comparison.hpp> namespace mpl = boost::mpl; template <int X> struct S { BOOST_MPL_ASSERT_MSG ((mpl::and_< mpl::less_equal< mpl::int_<1>, mpl::int_<X> >, mpl::greater_equal< mpl::int_<X>, mpl::int_<8> > >::value), X_SHOULD_BE_GE_1_AND_LE_8, (mpl::int_<X>)); }; int main() { // S<9> s9; // S<8> s8; S<0> s0; return 0; } ASSERT_MSGがそのものズバリですな 最後の引数に任意の型を放り込めるんで、 型タプル(?)と併用して複数の型を一括inspectとかお手のものです 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch