패킹된 가변 템플릿 인수 목록을 반복하는 방법
C에서 압축된 가변 템플릿 인수 목록을 반복하는 것은 다음으로 인해 문제가 발생합니다. 인수의 수를 알 수 없고 개별적으로 데이터를 검색할 수 없습니다. 이 문제는 재귀 호출을 방지하는 함수 구성 시 매크로를 사용함으로써 더욱 복잡해집니다.
이 문제를 해결하기 위해 제공된 솔루션은 다양한 유형의 데이터를 보유할 수 있는 사용자 정의 유형인 any를 사용합니다. 이 유형을 가변 템플릿에 전달하면 인수가 모든 객체의 벡터로 확장됩니다. 이후에 특수한 getter 함수(get
이 방법으로 작업을 수행하는 동안에는 다음이 필요합니다. foo(arg(1000))와 같은 자세한 함수 호출. 이를 단순화하기 위해 우리는 압축된 가변 템플릿 인수 목록에 대해 보다 간결한 반복 방법이나 std::get()과 동등한 방법을 찾습니다.
STL Fold Expressions 및 Lambda를 사용한 솔루션
C 17 이상의 경우 접기 표현식을 람다 함수와 함께 활용하여 반복을 달성할 수 있습니다. 람다는 카운터 증가 및 현재 인수 인쇄를 포함하여 루프 내에서 임의의 작업을 수행할 수 있습니다.
<code class="cpp">template <class ... Ts> void Foo (Ts && ... inputs) { int i = 0; ([&] { // Do things in your "loop" lambda ++i; std::cout << "input " << i << " = " << inputs << std::endl; } (), ...); }</code>
이 방법은 더욱 간결하고 읽기 쉬운 반복 메커니즘을 제공합니다.
대안 루프 중단 처리
앞서 언급한 솔루션은 작업을 수행하지만 루프 내에서 중단 또는 반환을 구현하는 기능이 부족합니다. 이 문제를 해결하기 위해 다음과 같은 해결 방법을 활용할 수 있습니다.
위 내용은 압축된 Variadic 템플릿 인수 목록을 간결하게 반복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!