此问题在此处已有答案:
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);
型
我做错了什么?人们会期望事情完全一样,我只是用运算符>>
替换了运算符<<
。
1条答案
按热度按时间kxeu7u2r1#
正如@T.C.回答的那样,这是clang中的一个bug。它是has been fixed。似乎有一个错字,使得
>
和>>
在fold表达式中无法正常工作。