考虑这个 C++1y 代码(LIVE EXAMPLE):
#include <iostream>
auto foo();
int main() {
std::cout << foo(); // ERROR!
}
auto foo() {
return 1234;
}
编译器(GCC 4.8.1)慷慨地发现了这个错误:
main.cpp:在函数'int main()'中:main.cpp:8:18:错误:在扣除'auto'std :: cout << foo()之前使用'auto foo()'; ^
How do I forward-declare foo() here? 或者更合适, is it possible to forward-declare foo()?
我也尝试编译代码,我试图在 .h
文件中声明 foo()
,定义 foo()
就像 .cpp
文件中的那个,包含 main.cpp
文件中的 main.cpp
包含 int main()
和调用 foo()
,并构建它们 .
发生了同样的错误 .
1 回答
根据提交的论文,N3638,明确有效 .
相关片段:
然而它继续说:
因此,在定义之前使用它的事实会导致错误 .