AnT*_*AnT 5 c++ declaration void language-lawyer incomplete-type
有在C++标准至少两个地方禁止限定对象与不完全类型(http://eel.is/c++draft/basic.def#5,http://eel.is/c++draft/basic .types#5).但是,在C++中通常允许为不完整类型的对象提供非定义声明.而且我似乎无法确定那些禁止void以这种方式声明类型不完整的"对象"的特定部分.(当然,void在一个例子中,它不是C++中的对象类型,但它们都不是引用类型.)所以,就是这样
extern void a;
Run Code Online (Sandbox Code Playgroud)
在C++中真的不合格?
在C void中,允许对象的非定义声明(如上所示),GCC和Clang都接受C代码中的上述内容(当然不允许定义).但在C++代码中,两个编译器都会为此类声明发出错误.标准的哪一部分让他们这样做?
[basic.fundamental]列出了void类型的可能用途(http://eel.is/c++draft/basic.types#basic.fundamental-13),但它似乎并不是一个完整的列表.
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |