Boost総合スレ part8
at TECH
389:373
09/12/17 08:08:52
MPL_WARNING と STATIC_WARNING を自作してみた。
Boost.Serialization の BOOST_STATIC_WARNING と比較して、
>>373のような条件下でも警告が働くし、
クラステンプレート内でも typename 無しで依存名を書ける。
VC++2008以外の環境は知らん。
#include <boost/mpl/bool.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/preprocessor/cat.hpp>
#define MY_MPL_WARNING(PRED) \
static bool const BOOST_PP_CAT(mpl_warning_, __LINE__) = sizeof(boost::mpl::assert_arg((void (*) PRED)0, 1))
#define MY_STATIC_WARNING(B) \
MY_MPL_WARNING((boost::mpl::bool_<B>))
// テスト
template<typename T>
struct hoge {
static int const i = 100;
static bool const b = i < 0;
MY_STATIC_WARNING(b); //おk
MY_STATIC_WARNING(boost::is_float<boost::mpl::identity<T>::type/*依存名*/>::value); //おk
};
typedef hoge<int> hoge_t;
hoge_t h;
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5030日前に更新/199 KB
担当:undef