gpt4 book ai didi

c++ - int{10} 和 10 之间有什么区别?

转载 作者:行者123 更新时间:2023-12-04 11:10:35 26 4
gpt4 key购买 nike

作为标题,我有两个表达:

int&& a = const_cast<int&&>(int{10});
int&& a = const_cast<int&&>(10);
第一次编译通过,但第二次没有。为什么会这样?
在我看来,这是因为 10 是一个文字,而 int{10} 是一个未命名的变量。是吗?

最佳答案

第一次转换通过的唯一原因是 g++ 中的错误。这两个代码都不合法,clang 和 icc 都拒绝它。
他们甚至发出了一个好消息:

error: the operand of a const_cast to an rvalue reference type cannotbe a non-class prvalue


这确实有道理,因为 10int{10}prvalues ,并且您不能将引用直接绑定(bind)到纯右值。相反,当引用被初始化时,编译器 materializes the temporary variable并绑定(bind)对它的引用。但是,没有规则可以为 const_cast 实现临时变量。 - 所以没有什么可以绑定(bind)引用。

关于c++ - int{10} 和 10 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68553335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com