gpt4 book ai didi

c++ - std::set::insert() 可以调用赋值运算符吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:12 25 4
gpt4 key购买 nike

我有一个带有自定义赋值运算符的类,它故意引入了受控的副作用。

如果我有这些元素的 std::set,我想知道是否可以使用 insert 调用赋值运算符。

即:

class A
{
public:
A & operator=(A const & rhs)
{
// custom assignment operator with deliberate side effects
// Could this be called with use of std::set::insert()?
}
};

std::set<A> a;

// Is it possible with this, or any use of "insert", that
// the assignment operator will ever be called?

a.insert(A());

是否可以使用 std::set::insert 调用赋值运算符?

最佳答案

在 C++11 之前的版本中,理论上是可以的。 C++11 禁止它,毫无疑问因为没有任何实现真正做到过。在 C++11 中,std::set 的成员不必支持赋值。在 C++11 之前的版本中,一些支持概念的实现可能有使用赋值的代码,作为检查你的类(class)支持它,但它应该在一个未评估的上下文,因此实际上不会调用运算符。

关于c++ - std::set::insert() 可以调用赋值运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22860575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com