gpt4 book ai didi

c++ - const_cast 一个右值到 const ref

转载 作者:行者123 更新时间:2023-11-30 01:54:22 25 4
gpt4 key购买 nike

我觉得奇怪的是 const_cast 不允许将右值(例如临时变量)转换为 const 限定引用,尽管它与 static_cast 一起工作得很好。有人能解释为什么它会这样吗?

const_cast< const std::string & >( std::string( "hello" ) ); // doesn't compile
static_cast< const std::string & >( std::string( "hello" ) ); // compiles

请不要陷入“const_cast 是邪恶的”论点,我在这里试图做的是正确理解 C++ 标准中处理 const_cast 和右值的部分。

最佳答案

const_cast 被指定做非常具体的事情。它可以将左值转换为左值引用,将右值转换为右值引用。它可以在指针之间进行转换。它不能从右值转换为左值引用,即使是 const 引用。阅读 5.2.11 以获得 Actor 可以做什么的确切 list ;该部分未列出的内容无法执行。

static_cast 可以做其他事情,如 5.2.9 中所列。其中,它可以将对const的引用从右值转换为左值。

关于c++ - const_cast 一个右值到 const ref,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22147490/

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