C++ C++;模板|错误:参数包未扩展为'';:
我得到以下错误:C++ C++;模板|错误:参数包未扩展为'';:,c++,templates,parameters,pack,C++,Templates,Parameters,Pack,我得到以下错误: error: parameter packs not expanded with '...': auto const m = msg...; 代码: #包括 #包括 #包括 #包括 使用名称空间std; 模板 无效打印(T&…msg) { 自动常数m=msg。。。; cout此语法: auto const m = msg...; 无效。请尝试以下操作: 模板无效打印(T&…msg){ 使用var=int[]; (void)var{0,(std::cout如果要保存在变量
error: parameter packs not expanded with '...':
auto const m = msg...;
代码:
#包括
#包括
#包括
#包括
使用名称空间std;
模板
无效打印(T&…msg)
{
自动常数m=msg。。。;
cout此语法:
auto const m = msg...;
无效。请尝试以下操作:
模板无效打印(T&…msg){
使用var=int[];
(void)var{0,(std::cout如果要保存在变量中并打印,msg…
pack中的最后一个值,可能是
template <typename... T>
void print (T& ... msg)
{
auto const m = std::get<sizeof...(msg)-1u>(std::tie(msg...));
std::cout << m;
}
在C++17之前,您可以使用一个未使用变量的初始化列表来模拟此操作(请参阅Rohan Bari的答案,以获得一个很好的示例)。您希望auto const m=msg…;
做什么?@max66修改了答案。谢谢,我学会了。非常好,谢谢,我向下问了另一个问题below@Pukki为什么我不能通过做m来拉它[index]
?-因为m
不是数组。我如何迭代参数?谢谢,但是,你能解释变量是如何工作的吗?为什么我不能通过做m[index]来提取它?@Pukki-解释起来并不简单…无论如何,包扩展意味着元素之间用逗号进行扩展。因此,如果你调用print(1,2,3,4),std::tie(msg…
变成std::tie(1,2,3,4)
。模板折叠(见第二个示例)更复杂,因为展开(本例中使用运算符作为分隔符,再次使用逗号)完整表达式;所以((std::我非常感谢您)
template <typename... T>
void print (T& ... msg)
{ ((std::cout << msg), ...); }