c++ 使用运算符>> [duplicate]折叠表达式

utugiqy6  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(101)

此问题在此处已有答案

Clang can't find template binary operator in fold expression(3个答案)
2天前关闭。
请看下面的代码片段:

#include <iostream>

template <typename... types> void writeall(const types & ... items)
{
    (std :: cout << ... << items);
}

template <typename... types> void readall(types & ... items)
{
    (std :: cin >> ... >> items);
}

int main()
{
    writeall(1, 2, 3, 4);
    std :: cout << std :: endl;

    int a, b, c, d;
    readall(a, b, c, d);
}

字符串
writeall中,我使用fold表达式向std :: cout中输入一个参数包,一切都很完美,我将1234打印到屏幕上。
readall中,我做了完全相同的事情,期望从std :: cin读取一个参数包。

error: expected ')'
(std :: cin >> ... >> items);


我做错了什么?人们会期望事情完全一样,我只是用运算符>>替换了运算符<<

kxeu7u2r

kxeu7u2r1#

正如@T.C.回答的那样,这是clang中的一个bug。它是has been fixed。似乎有一个错字,使得>>>在fold表达式中无法正常工作。

相关问题