簡體   English   中英

Cout中的C ++ 17折疊表達式

[英]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可以看出,二進制折疊可以具有以下兩種形式:

cppreference / fold中的屏幕截圖

其中E包表達式,I初始化表達式


沒有與您的(std::cout << args << ...)相匹配的二進制折疊,其形式為(I op E op ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM