c – decltype(void())和decltype(void {})之间的差异
发布时间:2020-12-16 07:49:59 所属栏目:百科 来源:网络整理
导读:这是后续的问题: What does the void() in decltype(void()) mean exactly?. decltype(void())在上面提到的问题(实际上在答案)中解释了这种情况下的void()意味着什么呢? 另一方面,我注意到decltype(void {})不能编译. 它们之间有什么区别(至少在decltype的
这是后续的问题:
What does the
void() in decltype(void()) mean exactly?.
decltype(void())在上面提到的问题(实际上在答案)中解释了这种情况下的void()意味着什么呢? 它们之间有什么区别(至少在decltype的上下文中)? 为了完整起见,它遵循一个最小的(not-)工作示例: int main() { // this doesn't compile //decltype(void{}) *ptr = nullptr; // this compiles fine decltype(void()) *ptr = nullptr; (void)ptr; } 解决方法
当与sizeof一起使用时,void()被解释为type-id.
当与decltype一起使用时,void()被解释为一个表达式. 我不认为void {}在任何上下文中都是有效的.它既不是有效的type-id也不是有效的表达式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |