A szabványos C++-ban nincs lehetőség sablonok néhány paraméterét lekötve új sablonokat származtatni. Az új szabvány bevezet egy ilyen konstrukciós lehetőséget a következő szintaxissal:
C-ben és C++-ban régóta használhatunk változó számú argumentumú függvényeket, például a következők szerint:
Ekkor S<int> esetén a következő generálódik:
Ezesetben S<>, S<int, char> nem fordul, mivel pontosan 1 paraméterre van szüksége.
Az új C++-ban a variadic template használata a következőképpen néz ki:
Ekkor S<int> továbbra is a következőt jelenti:
S<> esetén:
S<int, char> esetén pedig:
A függvényt sablon specializációval érdemes definiálni, külön a nulla, és a nem nulla argumentumú eseteket. A működés rekurzív, ha feldolgoztunk egy argumentumot, meghívjuk az eggyel kisebb számú argumentumú változatot:
Nézzünk még egy példát a variadic template-ekre rekurzió használatával:
Ezekután például
Először:
A rekurzív függvényhívás:
Az utolsó rekurzív hívás:
Így lehetséges rekurzívan végiggyalogolni az Args… -on
A szabványalkotó bizottság kivette a concepteket a készülő új szabvány tervéből, azok biztos, hogy nem lesznek benne a megjelenésekor. Indoklásukban lényegében azt mondják, hogy a módosításra az iparnak nincs szüksége, és a C++ szellemisége mindig is a gyakorlati tapasztalatokat helyezte előtérbe. Stroustrup a throws listához hasonlította, amely elméleti megfontolásokból került bele a nyelvbe, és határozottan nem aratott sikert, ezt nem akarták megismételni.
Az itt bemutatott verzió az eredeti terveket mutatja. A számos, conceptekre építő egyéb kiegészítés sorsa még nem tisztázott.
A conceptek bevezetésével a C++ is támogatja a korlátozott parametrikus polimorfizmust. Sablonok definiálásakor a paraméterekre megkötéseket tehetünk, ezeket a megkötéseket nevezzük koncepcióknak. Például a min függvény használatához a típuson kell, hogy legyen rendezés operátor, ezt kifejezhetjük a LessThanComparable koncepcióval:
A LessThanComparable koncepció része lesz a szabványos könyvtárnak, így definiálva:
Ebben a definícióban azt mondjuk, hogy egy típus megfelel a LessThanComparable koncepciónak, ha van megfelelő szignatúrájú < operátora. Az auto kulcsszó az elején azt jelenti, hogy azt, hogy a típus megfelel-e a koncepciónak automatikusan ellenőrizzük. Enélkül a típusokat explicit a koncepcióhoz kellene kötnünk a concept_map kulcsszóval.
Egy koncepciónak nem csak egy típusparamétere lehet. A Convertible koncepció például azt fejezi ki, hogy egy típus egy másikra konvertálható. Ezt így definiálhatjuk:
Ezt a koncepciót csak az általános szintaxissal tudjuk használni:
Amennyiben a concept nem auto, vagy a mi típusunk az abban kikötötteket máshogy kívánja teljesíteni, akkor használhatjuk a concept_map-et, ami egy fordítási idejű leképezése a típusok deklarációinak a conceptek előírásaira. Például fordított rendezést érhetünk el, ha az alábbi deklarációt tesszük: