我试图在编译时检测类 Foo
或 Bar
是否具有任一个变量值
或成员变量 initValue()
。
struct Foo
{
static const int value;
static int initValue();
};
struct Bar
{
};
我发现了几个 boost 和 boost MPL 类和实用程序,例如 BOOST_MPL_HAS_XXX_TRAIT_DEF
和 valid_member_metafunction
,它们似乎就是这样做的,但不确定使用哪个。我知道可以推出我自己的检测器,但我宁愿不这样做。
最佳答案
找到了。 has_static_member 数据
和 has static member function
来自 Boost TTI图书馆。
#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
关于c++ - 在编译时检测一个类是否有成员变量或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23342963/