Здравствуйте, Sinclair, Вы писали:
SP>>легко преобразуется в иммутабельный
SP>>SP>>class MyObject {
SP>> int _v;
SP>> public: MyObject setField(int v)&& { this->_v = v; return *this; }
SP>>}
SP>>
S>Простите, это на каком языке?
C++.
&& означает, что функция может применяться исключительно к временному объекту.
#include <string>
#include <cstdio>
using namespace std;
class MyObject {
int _v;
public: MyObject setField(int v)&& { this->_v = v; return *this; }
};
int main() {
auto m = MyObject().setField(1); // ok
auto m2 = MyObject();
m2.setField(1); // error: 'this' argument to member function 'setField' is an lvalue, but function has rvalue ref-qualifier
}