通常有的时候,我们在使用C++编码需要判断一个类是否具有某个方法(成员函数),此时就可以使用Boost.TTI模块来实现。
普通函数和静态函数都可以用来检测。
1)检测普通成员函数
首先声明要检测的成员函数名称,如这里检测类算法具有toString这个成员函数。
然后,调用boost的方法has_member_function_xx来判定是否具有此方法,其中xx表示要检测的方法的名称,T表示要检测的类。
#include <boost/tti/has_member_function.hpp>
// Generate the metafunction
BOOST_TTI_HAS_MEMBER_FUNCTION(toString)
// Check whether T has a member function toString
// which takes no parameter and returns a std::string
constexpr bool foo = has_member_function_toString<T, std::string>::value;
2)检测静态成员函数
对于静态成员函数,则声明是有区别的。
// In header: <boost/tti/has_static_member_function.hpp>
BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION(name)