Home > Backend Development > C++ > body text

How to Iterate Over Variadic Template Argument Lists in C ?

Linda Hamilton
Release: 2024-10-23 17:17:01
Original
107 people have browsed it

How to Iterate Over Variadic Template Argument Lists in C  ?

Iterating over Variadic Template Argument Lists

Packed variadic template argument lists, while powerful, can pose challenges in accessing individual arguments. This issue is particularly relevant when one needs to iterate over such lists to segregate arguments based on their types.

To achieve this, one option is to leverage the fold expressions introduced in C 17. By utilizing a callable, a lambda expression in this case, one can define a loop that iterates through the arguments and performs desired operations.

Here's an example:

<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>
Copy after login

In this example, the lambda is exceptionally concise, but even more complex operations can be performed within the loop. It's important to note that this technique requires C 17 or later.

For scenarios where returning or breaking out of the iteration is necessary, try/throw and variable/if switch approaches are available but should be considered code smells and used only if unavoidable.

The above is the detailed content of How to Iterate Over Variadic Template Argument Lists in C ?. For more information, please follow other related articles on the PHP Chinese website!

source:php
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!