推断返回类型是模板参数方法的类型

时间:2017-05-09 04:42:43

标签: c++ templates c++14

我很难用英语解释我的意思,但以下不可编辑的代码可能会说明我之后的内容:

template<class T>
auto fn(T t) -> decltype(T::method_call())
{
    return t.method_call();
}

基本上我希望函数返回T&#39方法返回的内容。实现此目的的语法是什么?

1 个答案:

答案 0 :(得分:2)

在C ++ 14中,您可以使用推导的返回类型来简单地说:

template <typename T>
decltype(auto) fn(T t) { return t.method_call(); }

您还可以使用尾随返回类型来指定相同的内容:

template <typename T>
auto fn(T t) -> decltype(t.method_call()) { return t.method_call(); }