Скажем, у меня есть следующий тип:
struct X {
X& operator+=(X const&);
friend X operator+(X lhs, X const& rhs) {
lhs += rhs;
return lhs;
}
};
И у меня есть объявление (предположим, что все именованные переменные являются lvalues типа X
):
X sum = a + b + c + d;
В С++ 17, какие у меня есть гарантии о том, сколько копий и перемещает это выражение? Как насчет не гарантированного разрешения?