可能重复:
Possible for C++ template to check for a function's existence?
你知道C ++中的任何元编程技巧,我可以检查一个类是否有特定的方法。我一直在考虑这样的事情:
template <class T, class Enable = void>
class A { ... };
// This version of the class will be compiled if T doesn't have my_method
template <class T>
class A<T, typename enable_if<has_method<T, T::my_method> >::type> { ... };
// This version of the class will be compiled if T has my_method
template <class T>
class A<T, typename disable_if<has_method<T, T::my_method> >::type> { ... };
其中一个选项是在其他人可以继承的类中定义my_method
,然后使用is_base_of
,但是其他选项是否需要继承?