使用套件擴充循環參數套件
在提供的程式碼片段中,您打算使用以下方法循環遍歷可變長度包包參數擴展語法。但是,程式碼無法編譯,並出現錯誤「參數包必須在此上下文中擴展。」
要解決此問題,您需要將包擴展放置在允許的上下文中。一個合適的位置是在花括號初始化列表中。考慮以下修改後的程式碼:
template<typename... Args> static void foo2(Args &&... args) { int dummy[] = { 0, ( (void) bar(std::forward<Args>(args)), 0) ... }; }
其工作原理如下:
透過此修改,程式碼將成功編譯並循環參數套件。
C 17 Fold表達式
在C 17 中,您可以使用折疊表達式來簡化程式碼:
((void) bar(std::forward<Args>(args)), ...);
此表達式來簡化程式碼:
此表達式來簡化程式碼展開套件並套用指定的操作(在本例中,呼叫bar( )) 從左到右。以上是如何使用套件擴展正確循環 C 參數包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!