c++ - 将返回类型推导为模板参数方法的类型

标签 c++ templates c++14

我很难用英语准确解释我的意思,但以下不可编译的代码可能会说明我所追求的:

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

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

最佳答案

在 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(); }

关于c++ - 将返回类型推导为模板参数方法的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43861280/

相关文章:

c++ - 在 UWP 中生成实时 Mp4

c++ - 我可以将其模板化以避免重写类吗?

c++ - 具有特定类型作为泛型参数的 STL 容器

c++ - 就序列点而言,前置增量与后增量

c++ - 在模板中使用 typedef 结构

c++ - 模型中虚拟索引实现的替代方案

c++ - 如何在不执行未定义行为的情况下获得浮点/双位?

delphi - 在 Delphi 中调用实时模板时如何创建 GUID?

c++ - 使用 C++ 模板元编程表示一组类型

c++ - 显式默认的默认构造函数和聚合