In operator overloading, the assignment operator is normally defined as follows:
T& T::operator =(const T2& b);
which returns T&
as result. But I want to know what happens when we return void
. For example, the assignment operator of std::atmoic<std::shared_ptr<T>>
returns void
:
void operator=( std::shared_ptr<T> desired ) noexcept;
as defined here and here. What happens in this case? Is it ok to always implement the assignment operator like this? I guess this prevents assignments like a=b=c;
which is good sometimes, isn't it?
CodePudding user response:
You won't be able to chain assignments
a = b = c;
(Nor introduce more complicated cases, like (a = b).method();
or if((a = b));
.)
OTOH, with void return type you don't need the ubiquitous return *this;
boilerplate.