因为const按定义就不能被move啊
你不要把一个对象想成一小块内存。
一个对象可以是很复杂的一个东西,它里面可以有很复杂的逻辑。
如果是const对象,protocol跟非const对象就不同了。
把const对象(真)cast成非const对象是undefined behavior,编译器怎么敢。
【 在 allegro (静水流深) 的大作中提到: 】
: 标 题: 关于copy elision和move ctor
: 发信站: 水木社区 (Fri Jul 17 14:52:04 2020), 站内
:
: I read again the NRVO carefully, seems I mis-understand the NRVO in case 5.
: NRVO needs to know which variable to return at construction.
:
: But still I have question for case-5, const effectively blocks the move ctor.
:
: Grammarly we can’t move a const lvalue by std::move().
: And compiler can use move over a dying non-const lvalue to construct the returned object.
:
: But why the compiler doesn’t optimize to use the move over a dying const lvalue?
: Just don’t want give us a big ooops? What’s your understand?
:
:
: Thanks,
: xxxx
:
: code排版太乱。
: 我重新截了个图。
:
: --
: [upload=1][/upload]
: ※ 修改:·allegro 于 Jul 17 14:59:18 2020 修改本文·[FROM: 209.249.20.*]
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 209.249.20.*]
--
修改:allegro FROM 209.249.20.*
FROM 76.126.252.*