Skabelon Options Pack

En skabelonparameterpakke i C ++ programmeringssproget er en   parameter for en skabelonfunktion eller -klasse, der består af et vilkårligt antal heterogene elementer. Det er en stenografi for et heterogent sæt af variadiske skabelonargumenter , defineret med en ellipse [1] [2] . ...

Denne sprogfunktion er blevet introduceret i syntaksen siden C++11 -standarden [3] .

Syntaks

Syntaksen til at erklære en variantskabelon tuplemed en parameterpakke er Values:

skabelon < typenavn ... værdier > klasse tuple ;

Elementerne i en skabelonparameterpakke kan være datatyper (typeparametre), ikke-typeparametre (ikke-typeparametre) og skabelonskabelonparametre [4] .

Semantik

Når en option pack definerer sine elementer, udvides den til en sekvens af nul eller flere argumenter [5] .

Opførselspakkens opførsel og dens betydning for compileren svarer til de normale muligheder, men den behandles som samlingen af ​​et vilkårligt antal af dens elementer. Parameterpakker, der ikke er generiske typer, kan repræsentere sammensætningen af ​​et hvilket som helst antal argumenter af deres tilsvarende type. Primære skabelonklasser, aliasskabeloner og variable skabeloner må kun have én skabelonparameterpakke. Hvis den er til stede, skal dens placering på listen over argumenter være den sidste. I funktionsskabeloner er begrænsningerne ikke så strenge: flere pakker er tilladt, deres vilkårlige arrangement er tilladt, så længe hvert skabelonargument efter pakken kan udledes eller har en standardværdi [1] .

For at bestemme antallet af elementer i skabelonparameterpakkelisten er operatøren tiltænkt sizeof..., som blev introduceret af sprogstandarden C++11 [6] . Startende med C++17 -standarden er det muligt at kollapse parameterpakken - masseanvendelsen af ​​enhver binær operation til alle dens elementer [7] .

Kilder

  • D. Vandevoerd, N. Josattis, D. Gregor. C++ skabeloner. Udviklerens reference = C++ skabeloner. Den komplette guide. - 2. - Sankt Petersborg.  : "Alfa-bog", 2018. - 848 s. - ISBN 978-5-9500296-8-4 .
  • M. Olsson. C++17 Hurtig syntaksreference: En lommevejledning til sproget, API'er og bibliotek. — Tredie Udgave. - Apress, 2018. - ISBN 978-1-4842-3599-7 . - doi : 10.1007/978-1-4842-3600-0 .

Noter

  1. 1 2 Vandewoerd, Josattis, Gregor, 2018 , Template Parameter Packs, s. 231.
  2. Olsson, 2018 , Variadic Templates, s. 168.
  3. Parameterpakke (siden C++11) Arkiveret 11. november 2020 på Wayback Machine en.cppreference.com
  4. Vandewoerd, Josattis, Gregor, 2018 , Skabelonindstillinger, s. 227.
  5. Vandewoerd, Josattis, Gregor, 2018 , Variable Patterns, s. 244.
  6. Vandewoerd, Josattis, Gregor, 2018 , The sizeof... operator, s. 91.
  7. Vandewoerd, Josattis, Gregor, 2018 , Convolution Expressions, s. 92.