C ++是否允许函数的默认返回类型?

在C中,以下恐怖是有效的:

myFunc() { return 42; // return type defaults to int. } 

但是,在C ++中呢? 无论如何我找不到它的参考…

我的编译器(Codegear C ++ Builder 2007)目前在没有警告的情况下接受它,但我已经注意到这 C ++中的错误。

它在C ++中是不正确的。 这意味着它不能使用标准的符合编译器进行编译。 标准附件C第7.1.5 / 4段解释了“禁止隐含int”的变化。

隐式返回类型在C89中有效,但许多编译器都对此提出警告。

它们在C ++和C99中都无效。

所以,它肯定是“形成错误”的C ++,但似乎许多编译器最多只接受警告。

  • Codegear C ++ Builder 2007:完全没有错误或警告
  • G ++:需要-W -Wall生成警告,或者-pedantic生成错误(Piotr)
  • MSVC 8:产生错误( tfinniga )
  • 其他…?

请添加/更正此列表!

这不是合法的C ++,但是一些编译器会以静默方式或使用诊断方式接受它。

如发布,它是不正确的。 MSVC 8给出以下错误:

 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int