c++ CRTP 中判断 Derived 中有没有某个成员函数

发布时间 2023-04-22 11:44:32作者: windtail

// 省略 HasMember

template <Dervied>
class B {
  static_assert(HasMember<Derived>());
}

class A : public B<A> {
public:
  void Member();
}

这样的代码是编译不过的,因为A还没有完全定义时,static_assert就会fail,但是将static_assert放到某个函数里是可以编译过的。