Re[2]: Правомерно ли такое
От: Шахтер Интернет  
Дата: 16.08.20 18:01
Оценка:
Здравствуйте, σ, Вы писали:

σ>Оно даже не скомпилируется. Должно быть:

σ>
σ>push_back_helper(std::vector<ItemType>&& v, const ItemType& elem)
σ>                                      ^^
σ>
Ну а так — правомерно.


Нет. Возвращаемое значение должно быть rvalue. Т.е. надо как-то так

template<typename ItemType>
inline
std::vector<ItemType>&& push_back_helper( std::vector<ItemType> &&v, const ItemType &elem )
{
    v.push_back(elem);
    return std::move(v);
}


Но, вообще, это плохо. Коряво.

Лучше сделать что-то вроде

template <class T>
struct VectorInit : public std::vector<T>
 {
  template <class Func>
  VectorInit(Func func) { func((std::vector<T> &)*this); } 
 };
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.