sky*_*ack 11 c++ void decltype language-lawyer c++11
这是问题的一个后续:什么是void()中decltype(void())意味着什么?.
decltype(void())编译好,void()在这种情况下的手段在上述问题中解释(实际上在答案中).
另一方面,我注意到decltype(void{})没有编译.
它们之间有什么区别(decltype至少在上下文中)?
为什么第二个表达式不能编译?
为了完整起见,它遵循一个最小的(不是)工作示例:
int main() {
// this doesn't compile
//decltype(void{}) *ptr = nullptr;
// this compiles fine
decltype(void()) *ptr = nullptr;
(void)ptr;
}
Run Code Online (Sandbox Code Playgroud)
void()与...一起被解释为type-id sizeof.
void()被用作时被解释为表达式decltype.
我不认为void{}在任何情况下都有效.它既不是有效的type-id也不是有效的表达式.
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |