让我们看一下这样的代码:
#include <iostream>
int foo(int i) {return i; }
int foobar(int z) {return foo(z);}
int main() {
std::cout << foobar(3) << std::endl;
}
它使用 g++ -std=c++11 ... 编译良好,并给出输出 3。但相同的输出由下式给出:
#include <iostream>
int foo(int i) {return i; }
int foobar(int z) { foo(z);}
int main() {
std::cout << foobar(3) << std::endl;
}
它编译没有问题,但很明显 foobar 中缺少关键字 return。它是 gcc 4.8.3 中的错误还是我不知道某些 c++11 原则?(在 Fedora 20 上运行)