Ahojte lidi :D
pouzivam g++ verze 4.6.3
Zkoumal jsem, jak se chova rvaluref v pretizenych operatorech. Napsal jsem si proto takovoutu zkusebni tridu http://db.tt/L90NqYOy
Kdyz program skompiluji a spustim(vyraz t_1 = t_2 + t_1 + t_2 * t_3):
operator*
operator+(const attempt&)
operator+(attempt&&)
operator= ref
nemelo by se misto operator+(const attempt&) volat take operator+(attempt&&)? (operator+(attempt&&) se vola po vyhodnoceni t_2 * t_3).
Kdyz zadam vyraz typu t_1 = t_2 + t_1 + t_2 + t_3 volaji se vsude operator+(const attempt&). Coz je velice zvlastni jelikoz bych ocekaval, ze se bude volat jeden operator+(const attempt&) a dva operator+(attempt&&).
Proc se takto g++ chova?