Здравствуйте, σ, Вы писали:
σ>Оно даже не скомпилируется. Должно быть:
σ>σ>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); }
};