加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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(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也不是有效的表达式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读