我刚刚在 codereview 上发生了争论,有人说具有 std::shared_ptr
成员的类会破坏 CopyConstructible 契约(Contract),具体来说:
原因是复制会通过增加 shared_ptr
的引用计数来改变源对象,但我的反驳是引用计数与 shared_ptr
分开存储。更改引用计数是一个副作用,但引用并未声明禁止复制对象之外的副作用。
但是我不是语言律师,所以我可能是错的。
根据 C++ 标准,什么是正确的?
最佳答案
一个对象的值(value)就是你所说的。
计数存储在哪里,或者它是否甚至存储在某个地方,都超出了标准的范围。
关于c++ - 拥有 shared_ptr 成员会破坏 CopyConstructible 契约(Contract)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44477875/