S>- будет создавать полную копию всех данных. Как бы постоянная ловушка. Т.е. нужно не забывать писать:
S>S>std::vector<uint8_t>& t = obj.getData();
S>
Непонятно причем тут вектор?
Оно будет работать аналогично с любым типом возвращаемого объекта.
Хочешь ссылку — дай знать об этом компилятору.
S>И далее. Что если я захочу в итоге переместить данные, забрать владение у MyClass — как красивее оформить?
S>S>std::vector<uint8_t> takeData()
S>{
S> return std::move(data);
S>}
S>
S>Здесь вызов std::move следует убрать. Несмотря на то, что в коде пытаются "подсказать" компилятору, что возвращаемый объект следует перемещать, а не копировать, используя функцию std::move, компилятор будет обязан сгенерировать более медленный ассемблерный код.
А если вернуть результат как &&?
Причем тут вектор — до сих пор неясно.