اگر بدون کپی و با move بخواهید این کارو انجام بدید باید اولا ورودی تابع rvalue refrence باشه و از std::forward استفاده کنید .
#include <iostream>
#include <vector>
#include <string>
template<class T, class...Args>
std::vector<T> do_works(Args&&...args)//const Args& kar nemikone
{
std::vector<T> r{ std::forward<Args>(args)... };
//...
return r;
}
///
int main()
{
std::string str="qwe";
auto r = do_works<std::string>("a","b","cc",std::move(str));
//az in ja be bad dg az str nabayad estefade beshe chon move shode
for (const auto& elem : r)
std::cout << elem << " ";
}