如何解决C++ 构造函数能否知道它是否正在构造一个 const 对象?
在 C++ 中,对象构造函数不能是 const 限定的。
但是 - 类 A
的对象的构造函数能否知道它是在构造 const A
还是非常量 A
?
受到关于 this question 的讨论中的一个细节的启发。
解决方法
不,因为复制省略(以及所谓的保证复制省略)可以改变构造“后”对象的常量:
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
}
x.c
和 y.c
应该是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。