首頁 >後端開發 >C++ >如何在 C 中迭代可變參數模板參數列表?

如何在 C 中迭代可變參數模板參數列表?

Linda Hamilton
Linda Hamilton原創
2024-10-23 17:17:01195瀏覽

How to Iterate Over Variadic Template Argument Lists in C  ?

迭代可變參數範本參數清單

打包可變參數範本參數清單雖然功能強大,但可能會給存取單一參數帶來挑戰。當需要迭代此類清單以根據其類型分隔參數時,此問題尤其相關。

要實現此目的,一種選擇是利用 C 17 中引入的折疊表達式。在這種情況下,使用 lambda 表達式,可以定義一個循環來迭代參數並執行所需的操作。

這是一個範例:

<code class="cpp">#include <iostream>

template <class ... Ts>
void Foo(Ts && ... inputs) {
  int i = 0;

  // Lambda that executes for each passed argument.
  ([&] {
    ++i;
    std::cout << "input " << i << " = " << inputs << std::endl;
  }(), ...);
}

int main() {
  Foo(2, 3, 4u, (int64_t)9, 'a', 2.3);
  return 0;
}</code>

在這個範例中,lambda 非常簡潔,但可以在循環內執行更複雜的操作。需要注意的是,此技術需要 C 17 或更高版本。

對於需要返回或中斷迭代的場景,可以使用 try/throw 和variable/if 切換方法,但應將其視為代碼異味和僅在不可避免時使用。

以上是如何在 C 中迭代可變參數模板參數列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn