Pachet de opțiuni de șablon

Un pachet de parametri șablon în limbajul de programare C ++ este un   parametru al unei funcții sau clase șablon, constând dintr-un număr arbitrar de elemente eterogene. Este o notație scurtă pentru un set eterogen de argumente șablon variadice , definite cu o elipsă [1] [2] . ...

Această caracteristică a limbajului a fost introdusă în sintaxă încă de la standardul C++11 [3] .

Sintaxă

Sintaxa pentru declararea unui șablon de variantă tuplecu un pachet de parametri este Values:

template < typename ... values ​​> tuplu de clasă ;

Elementele unui pachet de parametri șablon pot fi tipuri de date (parametri de tip), parametri non-tip (parametri non-tip) și parametri șablon de șablon [4] .

Semantică

Când un pachet de opțiuni își definește elementele, acesta se extinde într-o secvență de zero sau mai multe argumente [5] .

Comportamentul pachetului de opțiuni și semnificația acestuia pentru compilator este echivalent cu opțiunile normale, dar este tratat ca o colecție a oricărui număr de elemente ale acestuia. Pachetele de parametri care nu sunt tipuri generice pot reprezenta compoziția oricărui număr de argumente de tipul lor corespunzător. Clasele de șabloane primare, șabloanele de alias și șabloanele variabile pot avea un singur pachet de parametri șablon. Dacă este prezent, atunci poziția sa în lista de argumente trebuie să fie ultima. În șabloanele de funcție, restricțiile nu sunt atât de stricte: sunt permise pachete multiple, aranjarea lor arbitrară este permisă, atâta timp cât fiecare argument șablon după pachet poate fi dedus sau are o valoare implicită [1] .

Pentru a determina numărul de elemente din lista de pachete de parametri șablon, este destinat operatorului sizeof..., care a fost introdus de standardul limbajului C++11 [6] . Începând cu standardul C++17 , este posibil să restrângem pachetul de parametri - aplicarea în masă a oricărei operații binare la toate elementele sale [7] .

Surse

  • D. Vandevoerd, N. Josattis, D. Gregor. Șabloane C++. Referința dezvoltatorului = șabloane C++. Ghidul complet. - al 2-lea. - Sankt Petersburg.  : „Alfa-carte”, 2018. - 848 p. - ISBN 978-5-9500296-8-4 .
  • M. Olsson. Referință de sintaxă rapidă C++17: un ghid de buzunar pentru limbaj, API-uri și bibliotecă. - A treia editie. - Apress, 2018. - ISBN 978-1-4842-3599-7 . - doi : 10.1007/978-1-4842-3600-0 .

Note

  1. 1 2 Vandewoerd, Josattis, Gregor, 2018 , Pachete de parametri șablon, p. 231.
  2. Olsson, 2018 , Variadic Templates, p. 168.
  3. Pachetul de parametri (din C++11) Arhivat 11 noiembrie 2020 la Wayback Machine en.cppreference.com
  4. Vandewoerd, Josattis, Gregor, 2018 , Opțiuni șablon, p. 227.
  5. Vandewoerd, Josattis, Gregor, 2018 , Variable Patterns, p. 244.
  6. Vandewoerd, Josattis, Gregor, 2018 , The sizeof... operator, p. 91.
  7. Vandewoerd, Josattis, Gregor, 2018 , Convolution Expressions, p. 92.