繁体   English   中英

在编译时检测类是否具有成员变量或函数

[英]Detecting at compile-time whether a class has a member variabe or function

我想在编译时类是否检测FooBar任何变量value或者成员变量initValue()

struct Foo
{
    static const int value;
    static int initValue();
};

struct Bar
{
};

我发现了一些BOOST和BOOST MPL类和工具,例如BOOST_MPL_HAS_XXX_TRAIT_DEFvalid_member_metafunction似乎只是这样做,但不确定使用哪个。 我知道有可能推出我自己的检测器,但我不愿意。

找到了。 Boost TTI库中的has_static_member_datahas_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM