【发布时间】:2016-10-19 06:32:12
【问题描述】:
std::is_void 的描述表明:
提供等于true的成员常量值,如果T是类型void, const void, volatile void, 或 const volatile void。
那么const void 或volatile void 可能是什么?
This answer 声明 const void 返回类型无效(但在 VC++ 2015 上编译)
const void foo() { }
如果按照标准,const void 是无效的(VC 是错误的) - 那么const void 是什么?
【问题讨论】:
-
您链接到的答案并没有说明它是无效的,它表明它将是“毫无意义的”,我认为这意味着“与
void相比没有任何好处没有const"。 -
@hvd,答案表明编译器应该警告/错误关于这种资格。据此,我认为 C++ 标准不允许使用
void -
答案指出编译器应该警告这种限定,它没有提到错误,并且错误是错误的。那句话只是关于实现的质量,而不是关于一致性,但我可以理解,从评论本身来看,这一点都不清楚。
-
@Ajay 标准未指定在您使用无意义的代码时应发出警告。 gcc 决定给你一个额外的提示,即这段代码没有做任何事情。但 VC 无论如何都没有错。
-
@Ajay 答案表明 clang 会发出警告,并且在作者看来,其他编译器应该这样做。如果标准不允许,那将是错误,而不是警告。