我正在寻找一个解决方案,将User
个对象的参数组合成一个可迭代std::vector
或std::list
auto user_group = create_user_group(User(), User(), User(), User());
实施例
template <typename ...Users>
auto create_user_group(Users&&... users)
{
return std::vector<Users...>{std::forward<Users>(users)...};
}
错误
error: wrong number of template arguments (4, should be at least 1)
return std::vector<Users...>{std::forward<Users>(users)...};
答案 0 :(得分:4)
您需要将单个参数分隔为传递给std::vector
:
template <typename User, typename ...Users>
auto create_user_group(User &&user, Users&&... users)
{
return std::vector<std::decay_t<User>>{
std::forward<User>(user), std::forward<Users>(users)...
};
}
答案 1 :(得分:1)