3

可能重复:
是否可以编写 C++ 模板来检查函数是否存在?

我有兴趣找到一些 SFINAE 驱动的表达式,这些表达式允许我检测成员函数的存在并相应地处理它,例如:

template <typename T>
int maybe_member(T& x, {{sfinae_1}})
{
    return x.maybe_member();
}

template <typename T>
int maybe_member(T& x, {{sfinae_2}})
{
    std::cerr << "This T does not implement maybe_member.\n";

    return 1;
}

int main()
{
    my_type_t instance;

    return maybe_member(instance);
}

一组问题:

  • 这可以在 C++ 中完成吗?
  • c++11 是否添加了任何内容以使其更易于实现?
4

0 回答 0