[英]C++17 fold expression in cout
我正在學習新的c ++ 17 fold表達式,我從c ++ 17 fold表達式中看到了這段代碼。 我想知道為什么此代碼有效:
template<typename ...Args>
void printer(Args&&... args) {
(std::cout << ... << args) << '\n';
}
但不是這個:
template<typename ...Args>
void printer(Args&&... args) {
(std::cout << args << ...) << '\n';
}
在我看來,這似乎也很合理,並且會顛倒打印順序。
從cppreference可以看出,二進制折疊可以具有以下兩種形式:
其中E
是包表達式,而I
是初始化表達式 。
沒有與您的(std::cout << args << ...)
相匹配的二進制折疊,其形式為(I op E op ...)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.