在编译时检查成员函数签名

时间:2013-01-27 14:33:47

标签: c++ templates macros

  

可能重复:
  Is it possible to write c++ template/macros to check whether two functions have the same signatures

是否可以编写c ++模板/宏来检查两个成员函数在编译时是否具有相同的签名(返回类型和参数列表)?

我想要这样的事情:

CHECK_SIGNATURES(Foo, foo, Bar, bar);

如果Foo :: foo和Bar :: bar函数具有不同的返回类型或参数列表,则编译失败。

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

template <class T>
bool same(T, T) { return true; }

template <class T, class U>
bool same(T, U) { return false; }

或许您可以在duplicate question的答案中使用std::is_same