是否可以编写 c++ 模板/宏来检查两个成员函数在编译时是否具有相同的签名(返回类型和参数列表)?
我想要这样的东西:
CHECK_SIGNATURES(Foo, foo, Bar, bar);
如果 Foo::foo 和 Bar::bar 函数具有不同的返回类型或参数列表,则编译失败。
是否可以编写 c++ 模板/宏来检查两个成员函数在编译时是否具有相同的签名(返回类型和参数列表)?
我想要这样的东西:
CHECK_SIGNATURES(Foo, foo, Bar, bar);
如果 Foo::foo 和 Bar::bar 函数具有不同的返回类型或参数列表,则编译失败。
尝试以下操作:
template <class T>
bool same(T, T) { return true; }
template <class T, class U>
bool same(T, U) { return false; }
或者,也许您可以在重复问题std::is_same
的答案中使用 like 。