ein*_*ica 6 c++ reflection construction constants
在 C++ 中,对象构造函数不能是 const 限定的。
但是 - 类对象A的构造函数能否知道它正在构造 aconst A还是非常量A?
在关于这个问题的讨论中受到一个很好的启发。
不,因为复制省略(以及所谓的保证复制省略)可以在构造“之后”更改对象的常量:
struct A {
bool c;
A() : c(magic_i_am_const()) {}
A(const A&)=delete; // immovable
};
const A f() {return {};}
A g() {return f();} // OK
void h() {
A x=f(); // OK
const A y=g(); // OK
}
Run Code Online (Sandbox Code Playgroud)
应该x.c和y.c是什么?