为啥 g++ 接受缺少基础类型的引用类型?

Posted

技术标签:

【中文标题】为啥 g++ 接受缺少基础类型的引用类型?【英文标题】:Why does g++ accept a reference type with missing underlying type?为什么 g++ 接受缺少基础类型的引用类型? 【发布时间】:2017-09-06 16:51:51 【问题描述】:

我的意思是向一个类添加一个复制构造函数,但忘记添加类型。 g++ 5.4.0 编译成功。

这是一个 g++ 5.4.0 成功编译和构建的最小程序。

struct Foo
 
   Foo(const&) 
   Foo() 
;

int main()

   Foo f1;
   Foo f2 = f1;

为什么 g++ 不将Foo(const&) 报告为错误?

【问题讨论】:

我在想可能是隐式 int 但I can't reproduce on Wandbox 请提供一个活生生的例子。 @ShafikYaghmour,ideone.com 不允许我选择编译器版本。允许您这样做的网站上的任何指针? 是的,我评论中的链接转到了 Wandbox。 @ShafikYaghmour 这确实很奇怪。我的安装中一定还有其他东西。这是显示我发布的终端的图像。 imgur.com/5BIGluy. 【参考方案1】:

这似乎是我安装 g++ 5.4.0 的缺陷。

在https://ideone.com/D0vGrw 使用 g++ 6.3 编译失败。

我使用了相同的代码块。

struct Foo
 
   Foo(const&) 
   Foo() 
;

int main()

   Foo f1;
   Foo f2 = f1;

它也无法在Wandbox 使用 g++ 5.4.0 进行编译。

【讨论】:

以上是关于为啥 g++ 接受缺少基础类型的引用类型?的主要内容,如果未能解决你的问题,请参考以下文章

定义,并且找不到可接受类型为“ASP._aspx”的第一个参数的扩展方法“”(是否缺少 using 指令或程序集引用?)

“ASP._aspx”不包含“”的定义,并且找不到可接受类型为“ASP._aspx”的第一个参数的扩展方法“”(是否缺少 using 指令或程序集引用?)

为啥链接生命周期仅与可变引用有关?

为啥 F# (FSharpOption<T>) 中的默认参数是引用类型?

为啥 .Net 引用类型中有接口?

服务引用 - 为啥在引用的程序集中重用类型