如何将 header 文件中自动 return 类型的函数包含到多个 cpp 文件中

How to include functions with auto return type from header file into multiple cpp files

我想定义一个自动 return 类型的函数,如果我包含 header,我可以从多个 .cpp 文件中调用它。我有 4 个文件

head.hpp - 函数所在

#ifndef HEAD_HPP
#define HEAD_HPP 

auto f();

#endif

head.cpp - 声明函数的地方

#include "head.hpp"

auto f(){
    return [](){
        return 10;
    };
}

test1.cpp - 使用的地方

#include "head.hpp"
int foo(){
    auto func = f();
    return f();
}

main.cpp - 也用在什么地方


#include "head.hpp"
int foo();
int main(){
    auto fu = f();

    return fu() + 5 + foo();
}

所有文件一起编译 我仍然收到错误:

error: use of ‘auto f()’ before deduction of ‘auto’

auto fu = f();

不幸的是,C++ 不能这样工作。

在 C++ 中调用函数时:

auto fu=f();

编译器必须知道函数实际 return 的离散类型。 auto 不是真实类型。它只是一个类型的占位符,稍后再弄清楚。

但是这个"later"永远不会出现。如果编译器看到的只是 auto return 类型,编译器无法确定函数的实际 return 类型,因此,程序格式错误,你得到一个编译错误。

这是 C++ 的基本方面,没有解决方法。