スレを勃てるまでもないC/C++の質問はここで 12
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドの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とかお手のものです
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5135日前に更新/231 KB
担当:undef