C şablonlar Turing-complete? | Netgez.com
SORU
9 EKÄ°M 2008, PERÅžEMBE


C ÅŸablonlar Turing-complete?

C şablon sistemi Turing-tam olduğundan derleme zamanında söylendi. Bu this post içinde belirtilen ve aynı zamanda wikipedia.

Bu özelliği kullanan bir hesaplama saçma bir örnek verebilir misiniz?

Bu aslında yararlı bir uygulama mı?

CEVAP
9 EKÄ°M 2008, PERÅžEMBE


Örnek

#include <iostream>

template <int N> struct Factorial
{
    enum { val = Factorial<N-1>::val * N };
};

template<>
struct Factorial<0>
{
    enum { val = 1 };
};

int main()
{
    // Note this value is generated at compile time.
    // Also note that most compilers have a limit on the depth of the recursion available.
    std::cout << Factorial<4>::val << "\n";
}

Bu biraz eğlenceli ama çok pratik değil.

Sorunuzun ikinci kısmına cevap vermek için:
Bu aslında yararlı bir uygulama mı?

Kısa Cevap: Çeşit.

Uzun Cevap: Evet, ama eÄŸer bir ÅŸablon varsa Sadece daemon.

İyi programlama Diğerleri kullanmak için çok yararlı bir meta-programlama şablonu kullanarak (yani bir kütüphane) olmak gerçekten çok zor-mümkün olsa). Hatta artırmaya Yardımcı olmak için vardır MPL aka (Meta Programlama Kütüphanesi). Ama şablon kodunda derleyici bir hata ayıklama deneyin ve uzun ve zor bir yolculuk olacak.

Çok pratik bir örnek yararlı bir şey için kullanılmakta:

Scott Meyers C dili için uzantıları (terimi kullanıyorum) şablon imkanları kullanarak çalışıyor. Burada da okuyabilirsin 'Enforcing Code Features'

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • expertvillage

    expertvillag

    5 NÄ°SAN 2006
  • gamingbits

    gamingbits

    2 Mayıs 2006