Şablon Meta Programlama

Vikipedi, özgür ansiklopedi
Atla: kullan, ara

TMP “Şablon Meta Programlama”nın İngilizce çevirisinin kısaltmasıdır. C++ 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[değiştir | kaynağı değiştir]

TMP türler hakkında meta bilgi tutmak için kullanılabilir. Örneğin,

template <class T>
class meta_bilgi
{
static const bool tam_sayı_mı=false;
}

özelleşmemiş bir şablon tanımlar.

Bu şablonun

int

için özelleşmiş şekli

class meta_bilgi<int>
{
static const bool tam_sayı_mı=true;
}


programcı tarafından

int

türü için derleme öncesinden bilgi almak için kullanılabilir.

Meta işlevler[değiştir | kaynağı değiştir]

TMP sabit değerlerin hesaplamak ve basit şablon meta işlevler yazmak için kullanılabilir.

Değer hesaplama[değiştir | kaynağı değiştir]

Ö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[değiştir | kaynağı değiştir]

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.

    template <int x, int y>
    class GCD
    {
        public:
            enum{
                RET = GCD<y,x%y>::RET
        };
    };
 
    template<int x>
    class GCD<x,0>
    {
        public:
            enum {
                RET = x
        };
    };
 
    int main()
    {
        int x [GCD<1001,156>::RET ];
        std::cout << sizeof(x) << std::endl;
        return 0;
    }

Dış bağlantılar[değiştir | kaynağı değiştir]