C++/CLI és Managed C++

Sablonok

C++ sablonok

A C++/CLI támogatja a hagyományos C++ sablonokat pontosan úgy, ahogy a szabványos C++ is teszi: kvázi makróként.

Ez sok tekintetben rugalmasabb, mint a .NET genericjei, azonban van néhány korlátja:

CLR sablonok a C++/CLI-ben

A .NET 2.0-ás verziójától bevezették a .NET-ben is a sablonokat, s CLR szinten implementálták őket. Ez azzal az előnnyel jár, hogy a C++ sablonhoz hasonlóan a példányosított sablon önálló osztály, amely azonban ebben az esetben futási időben jön létre. A paraméterekre vonatkozóan számos kikötés tehető: milyen osztály vagy interfész leszármazottja legyen, érték vagy referencia típus, stb.

A CLR sablonokat a generic kulcsszóval deklaráljuk, a feltételek megadása a where kulcsszó után lehetséges.

A C++ sablonokhoz hasonlóan létrehozhatunk sablon osztályt és sablon metódust is, sőt sablon interfészeket is definiálhatunk.

generic where T : I void f(T t) { t->f1(); t->f2(); safe_cast(t)->f3(); }

Különbségek a CLR Generic-ek és a C++ template-k között: