考虑以下 C++1y 代码 (实时示例):
#include <iostream>
auto foo();
int main() {
std::cout << foo(); // ERROR!
}
auto foo() {
return 1234;
}
编译器(GCC 4.8.1)友善地报告了这个错误:main.cpp: In function ‘int main()’: main.cpp:8:18: error: 在推断‘auto’前使用了‘auto foo()’ std::cout << foo(); ^ 如何在此处前向声明foo()?或者更适当的是,是否可以前向声明foo()?
我还尝试编译了一些代码,在.h文件中尝试声明foo(),在.cpp文件中像上面那样定义foo(),在main.cpp文件中包含.h文件,其中包含int main()和对foo()的调用,然后构建它们。
出现了相同的错误。