[英]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.