如何断言只有当调用对象是常量值时才能调用方法?

How to assert that a method can only be called if the calling object is a const value?

本文关键字:调用 常量 方法 对象 断言 何断言      更新时间:2023-10-16

出于优化目的,我正在编写一个类,其中复制运算符通过引用传递类的内部。

但是,我希望能够编写两个复制运算符,一个接受常量值并且只能由 const 对象调用,另一个非 const 变体可以调用非 const 方法。

IE我想要类似的东西...

myClass& operator= (const myClass& copy_to, const myClass& copy_from);
myClass& operator= (myClass& copy_to, myClass& copy_from);

但是,在C++中,复制运算符必须是非静态的,并且只能接受 1 个参数。如何确保接受 const 参数的复制运算符仅从 const 调用对象调用?

如果我的问题有任何问题,请发表评论,以便我改进*

尊重这个概念很重要。用户不希望在复制操作后修改源对象。这是 CopyAssignable 概念的后置条件。

t = v //postcondition: The value of v is unchanged. 

源参数的const修饰符向用户显式表示此要求:只读对象。

也许一个移动 ctor ou 移动分配运算符(MoveAssignable(可以为您服务。 如果没有,我认为在这里省略复制概念是个好主意。