Boost.MPL , TMP, TMP. Boost.Fusion Boost.TypeTraits ; , , , , .
here - , ++ 03. ( has_func1_member), SFINAE:
template<typename T>
typename boost::enable_if<has_func1_member<T> >::type
maybe_call(T& t)
{ t.func1(); }
template<typename T>
typename boost::disable_if<has_func1_member<T> >::type
maybe_call(T&)
{
}
maybe_call(param);
, ++ 11 , .