一个关于 private member function detect 的 SFINAE 模板

问题的开始

问题的最初的样子

曙光

最后的方案

问题的开始

问题起源于,我要搞一个模板,来检查一个类,是不是有一个特定的回调接口 OnAlarm()。我显然希望在我的模板类里面,直接调用这个 OnAlarm 回调的。但是问题,就这么出现了。我需要一个模板,来检查一个传给构造函数的指针指向的类型,是不是有我需要的 OnAlarm 方法。如果没有的话,我需要使用另一套回调的机制。

问题就出在了这个检查上面。

问题的最初的样子

最开始的时候,我是写成了这个样子的。

template <typename T, typename = void>

struct ......