c++ - C++ 构造函数能否知道它是否正在构造一个 const 对象?

标签 c++ reflection constants construction

在 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.cy.c是?

关于c++ - C++ 构造函数能否知道它是否正在构造一个 const 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68228064/

相关文章:

c# - 如何在 C# 中编码(marshal) C++ 枚举

c++ - 如何使用安全的 strcpy_s 函数?

c++ - 赋值运算符重载期间类的指针成员

java - 获取类的所有(派生)接口(interface)

configuration - AngularJS "Constant"工厂

c++ - CoreAudio AudioUnitSetProperty 总是设置采样率失败

objective-c - Objective C 能否在运行时确定调用者对象引用(反射)?

c# - 获取实现某个抽象类的所有类

c++ - 获取未修改的非常量变量的警告

c++ - 函数参数使用 'const'