Boost.TTIのhas_member_function
機能を使って、特定のメンバ関数を持っているかを判定する。
C++11のSFINAE Expressionを使えない環境向け。
#include <boost/tti/has_member_function.hpp> struct X { int foo(double, char); }; namespace my_namespace { // foo()メンバ関数を持っているか判定するためのメタ関数を定義する BOOST_TTI_HAS_MEMBER_FUNCTION(foo) } int main() { static_assert( my_namespace::has_member_function_foo< X, // 対象の型 int, // 戻り値の型 boost::mpl::vector<double, char> // パラメータの型 >::value == true, "must be true"); }