Şablon Meta Programlama
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.
Konu başlıkları |
Meta bilgiler [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]
TMP sabit değerlerin hesaplamak ve basit şablon meta işlevler yazmak için kullanılabilir.
Değer hesaplama [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]
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;
}