代码之家  ›  专栏  ›  技术社区  ›  cigien Jorge Eldis

带函数模板的导出返回类型

  •  3
  • cigien Jorge Eldis  · 技术社区  · 4 年前

    考虑以下程序:

    #include<functional>
    
    template<typename T>
    T f() { return T{}; }
    
    template<typename T>
    auto g() { return T{}; }
    
    int main() { 
        std::function<int()> a = f<int>;  // ok, clang and gcc
        std::function<int()> b = g<int>;  // ok, clang, error gcc
    }
    

    gcc中的错误是

    error: conversion from '<unresolved overloaded function type>' to non-scalar type 'std::function<int()>' requested
    

    这是 code

    T ,并在推导返回类型时在gcc上失败。

    编辑:评论认为这是一个gcc错误,但我能得到一个确认,该程序确实是格式良好的?

    0 回复  |  直到 4 年前