[英]Detecting at compile-time whether a class has a member variabe or function
我想在編譯時類是否檢測Foo
或Bar
有任何變量value
或者成員變量initValue()
struct Foo
{
static const int value;
static int initValue();
};
struct Bar
{
};
我發現了一些BOOST和BOOST MPL類和工具,例如BOOST_MPL_HAS_XXX_TRAIT_DEF
和valid_member_metafunction
似乎只是這樣做,但不確定使用哪個。 我知道有可能推出我自己的檢測器,但我不願意。
找到了。 Boost TTI庫中的has_static_member_data
和has_static_member_function
。
#include <boost/tti/has_static_member_data.hpp>
BOOST_TTI_HAS_STATIC_MEMBER_DATA( value ) // Generates class template has_static_member_data_value
...
has_static_member_data_value<Foo, int>::value; // returns true
has_static_member_data_value<Bar, int>::value; // returns false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.