RVO, std::move() i biblioteki współdzielone

0

Witajcie,

Dziwiło mnie to zwracanie przez Qt bezpośrednio klas typu QByteArray, teraz już wiem, że to się rozchodzi o RVO, lecz mam kilka pytań.
Czytałem coś o tym całym RVO. Czy gdy używam bibliotek współdzielonych .so czy tam .dll to RVO jest możliwe? Oczywiście zakładam zgodność kompilatora binarki i biblioteki. Jeśli nie ma jednoznacznego returna tylko chowa się w instrukcjach warunkowych to RVO nie jest możliwe, ale wtedy lepsze wyjście to return std::move(someLocalVar) niż gołe return someLocalVar;?

2

Nawet jak chcesz korzystać z move semantics, to

return std::move(someLocalVar);

jest gorsze niż

return someLocalVar;

Standard gwarantuje, że move semantics będzie użyte (jeśli istnieje) w drugim przypadku jeśli RVO nie wypaliło.

0

Pozostała jeszcze sprawa kodu w bibliotekach. Czy tam możliwe jest RVO?

1 użytkowników online, w tym zalogowanych: 0, gości: 1