Mallin asetuspaketti

Malliparametripaketti C ++ -ohjelmointikielessä on mallifunktion tai -luokan  parametri ,  joka koostuu mielivaltaisesta määrästä heterogeenisiä elementtejä. Se on lyhennetty merkintä heterogeeniselle joukolle variadic-mallipohjaisia ​​argumentteja , jotka on määritelty ellipsillä [1] [2] . ...

Tämä kieliominaisuus on otettu käyttöön syntaksissa C++11 -standardin jälkeen [3] .

Syntaksi

Syntaksi muunnelmamallin ilmoittamiselle tupleparametripaketilla on Values:

malli < typename ... arvot > luokan monikko ;

Malliparametripaketin elementit voivat olla tietotyyppejä (tyyppiparametrit), ei-tyyppiparametreja (ei-tyyppiparametreja) ja mallipohjaparametreja [4] .

Semantiikka

Kun optiopaketti määrittelee elementtinsä, se laajenee nollan tai useamman argumentin sarjaksi [5] .

Optiopaketin käyttäytyminen ja sen merkitys kääntäjälle vastaa normaaleja valintoja, mutta sitä käsitellään minkä tahansa määrän elementtien kokoelmana. Parametripaketit, jotka eivät ole yleisiä tyyppejä, voivat edustaa minkä tahansa määrän niitä vastaavia argumentteja. Ensisijaisilla malliluokilla, aliasmalleilla ja muuttujamalleilla saa olla vain yksi malliparametripaketti. Jos se on läsnä, sen sijainnin argumenttiluettelossa on oltava viimeinen. Toimintomalleissa rajoitukset eivät ole niin tiukkoja: useat paketit ovat sallittuja, niiden mielivaltainen järjestely on sallittu, kunhan jokainen paketin jälkeinen malliargumentti voidaan päätellä tai niillä on oletusarvo [1] .

Mallin parametripakettiluettelon elementtien lukumäärän määrittämiseen on tarkoitettu operaattori sizeof..., joka otettiin käyttöön C++11 -kielistandardilla [6] . C++17 -standardista alkaen on mahdollista tiivistää parametripaketti - minkä tahansa binäärioperaation massasovellus kaikkiin sen elementteihin [7] .

Lähteet

  • D. Vandevoerd, N. Josattis, D. Gregor. C++-malleja. Kehittäjän viite = C++ Templates. Täydellinen opas. - 2. - Pietari.  : "Alfa-kirja", 2018. - 848 s. - ISBN 978-5-9500296-8-4 .
  • M. Olsson. C++17 Quick Syntax Reference: Pocket Guide to Language, API ja Library. – Kolmas painos. - Apress, 2018. - ISBN 978-1-4842-3599-7 . - doi : 10.1007/978-1-4842-3600-0 .

Muistiinpanot

  1. 1 2 Vandewoerd, Josattis, Gregor, 2018 , Malliparametripaketit, s. 231.
  2. Olsson, 2018 , Variadic Templates, s. 168.
  3. Parametripaketti (C++11:stä lähtien) Arkistoitu 11. marraskuuta 2020 osoitteessa Wayback Machine en.cppreference.com
  4. Vandewoerd, Josattis, Gregor, 2018 , Mallin asetukset, s. 227.
  5. Vandewoerd, Josattis, Gregor, 2018 , Variable Patterns, s. 244.
  6. Vandewoerd, Josattis, Gregor, 2018 , The sizeof... operaattori, s. 91.
  7. Vandewoerd, Josattis, Gregor, 2018 , Convolution Expressions, s. 92.