“Şablon Meta Programlama" (İng. Template Meta Programming, TMP), Meta programlama kendini veya başka programları değiştiren veya yaratan programlar yazmaktır. Şablon meta programlar derleyici tarafından derleme zamanında çalıştırılan programlardır.
Meta bilgiler
TMP türler hakkında meta bilgi tutmak için kullanılabilir. Örneğin,
template <class T> struct meta_bilgi { static const bool tam_sayı_mı = false; };
özelleşmemiş bir şablon tanımlar.
Bu şablonun int türü için özelleşmiş şekli:
template <> struct meta_bilgi<int> { static const bool tam_sayı_mı = true; };
programcı tarafından
static_assert(meta_bilgi<int>::tam_sayı_mı == true); static_assert(meta_bilgi<double>::tam_sayı_mı == false);
şeklinde derleme öncesinden bilgi almak için kullanılabilir.
Meta işlevler
TMP sabit değerlerin hesaplamak ve basit şablon meta işlevler yazmak için kullanılabilir.
Değer hesaplama
Örneğin,
const double PI = 3.1415; const double PI_KARE = PI * PI;
sabit değer hesaplayan bir meta programdır.
Basit meta işlevler
Meta işlevler derleme zamanında basit işlemler yapmak için kullanılabilir. Örneğin aşağıdaki program iki sayının ortak bölenlerinin en büyüğünü (OBEB) derleme zamanında hesaplar.
#include <iostream> template <int x, int y> struct GCD { enum { RET = GCD<y, x % y>::RET }; }; template <int x> struct GCD<x, 0> { enum { RET = x }; }; int main() { int x[GCD<1001, 156>::RET]; std::cout << sizeof(x) << std::endl; return 0; }
Dış bağlantılar
- David Abrahams & Aleksey Gurtovoy (2004), C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (1 bas.), Addison-Wesley Professional, ISBN
- Boost.Hana 15 Mart 2024 tarihinde Wayback Machine sitesinde . (İngilizce)
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Sablon Meta Programlama Ing Template Meta Programming TMP C Meta programlama kendini veya baska programlari degistiren veya yaratan programlar yazmaktir Sablon meta programlar derleyici tarafindan derleme zamaninda calistirilan programlardir Meta bilgilerTMP turler hakkinda meta bilgi tutmak icin kullanilabilir Ornegin template lt class T gt struct meta bilgi static const bool tam sayi mi false ozellesmemis bir sablon tanimlar Bu sablonun int turu icin ozellesmis sekli template lt gt struct meta bilgi lt int gt static const bool tam sayi mi true programci tarafindanstatic assert meta bilgi lt int gt tam sayi mi true static assert meta bilgi lt double gt tam sayi mi false seklinde derleme oncesinden bilgi almak icin kullanilabilir Meta islevlerTMP sabit degerlerin hesaplamak ve basit sablon meta islevler yazmak icin kullanilabilir Deger hesaplama Ornegin const double PI 3 1415 const double PI KARE PI PI sabit deger hesaplayan bir meta programdir Basit meta islevler Meta islevler derleme zamaninda basit islemler yapmak icin kullanilabilir Ornegin asagidaki program iki sayinin ortak bolenlerinin en buyugunu OBEB derleme zamaninda hesaplar include lt iostream gt template lt int x int y gt struct GCD enum RET GCD lt y x y gt RET template lt int x gt struct GCD lt x 0 gt enum RET x int main int x GCD lt 1001 156 gt RET std cout lt lt sizeof x lt lt std endl return 0 Dis baglantilarDavid Abrahams amp Aleksey Gurtovoy 2004 C Template Metaprogramming Concepts Tools and Techniques from Boost and Beyond 1 bas Addison Wesley Professional ISBN 0321227255 Boost Hana 15 Mart 2024 tarihinde Wayback Machine sitesinde Ingilizce