我正在制作一个跨平台库,在多个平台上实现几个基本原语。为了验证基元(即类)的每个实现是否提供所有平台所需的核心成员,我使用以下构造:
template<typename _Ty> int _MethodVerifyHelper(_Ty);
#define ENSURE_MEMBER_DECL(className, methodName, returnType, ...) typedef char __PROTOTYPE_VERIFIER__[sizeof(_MethodVerifyHelper<returnType (className::*)(__VA_ARGS__)>(&className::methodName))]
然后我写这样的东西:
ENSURE_MEMBER_DECL(Event, TryWait, bool, unsigned);
所以如果 Event 类没有bool TryWait(unsigned)
方法,我们会在这里得到一个编译错误。
问题是:在 C++ 中是否有类似的语法来声明指向构造函数的指针?如果类不提供具有给定参数类型的构造函数,我想要一个导致编译时错误的语句。