Используйте любой современный компилятор, затем вы можете использовать std::move
, который берет ваш вектор и возвращает его как значение:
function(std::move(my_vector));
Если он вам недоступен, вы можете попробовать что-то вроде этого:
template<typename T>
T Move(T & val)
{
T ret;
ret.swap(val);
return ret;
}
Дайте мне знать, если вам повезет с этим.
Или вы можете поменять вектор непосредственно в паре после его создания:
std::pair<int, std::vector<MyType> > p;
p.second.swap(my_vector);
Хотя, думаю, это вам не поможет, если вам нужно возвращаемое значение std::make_pair
в качестве значения.