c++判断类具有某个成员函数

2019-01-03  本文已影响0人  swifterlc
#define HAS_MEMBER(XXX) \
template<typename T, typename... Args>\
struct has_member_##XXX \
{ \
private:  \
  template<typename U> static auto Check(int) -> decltype(std::declval<U>().XXX(std::declval<Args>()...), std::true_type());  \
  template<typename U> static std::false_type Check(...); \
public: \
  static constexpr auto value = decltype(Check<T>(0))::value; \
}

使用:判断类A具有成员函数foo,并且函数具有一个int一个double参数.

HAS_MEMBER(foo);
class A {};
//class A
//{
//public:
//  void foo(int, double) {}
//}
bool ret = has_member_foo<A, int, double>::value;
上一篇下一篇

猜你喜欢

热点阅读