Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;模板|错误:参数包未扩展为'';:_C++_Templates_Parameters_Pack - Fatal编程技术网

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), ...); }