SORU
21 EYLÜL 2008, Pazar


C metaprogramming şablonu için en iyi giriş?

("Template metaprogramming") derleme zamanı sırasında programların yürütülmesini sağlayan büyük C bir tekniktir. aka statik metaprogramming Bir ampul kafamda bu kurallı metaprogramming örnek okur okumaz gitti:

#include <iostream>
using namespace std;

template< int n >
struct factorial { enum { ret = factorial< n - 1 >::ret * n }; };

template<>
struct factorial< 0 > { enum { ret = 1 }; };

int main() {
    cout << "7! = " << factorial< 7 >::ret << endl; // 5040
    return 0;
}

Eğer bir daha C statik metaprogramming öğrenmek istiyorsa, en iyi kaynakları (kitaplar, web siteleri, on-line, ne olursa olsun bir ders) nedir?

CEVAP
21 EYLÜL 2008, Pazar


[Kendi soruma cevap]

Şimdiye kadar bulduğum en iyi tanıtımları Bölüm 10, "C Statik Metaprogramming"Üretken Programlama, Yöntem, araç ve Uygulamalartarafından Krzysztof Czarnecki ve Ulrich W. Eisenecker,-13 ISBN: 9780201309775; bölüm 17, "Metaprograms"C Şablonları: Tam KılavuzuDavid ve Nicolai M. Josuttis Vandevoorder, ISBN-13: 9780201734843.

alt text alt text alt text alt text

Todd Veldhuizen 4* *mükemmel bir öğretici vardır.

Genel olarak C programlama için iyi bir kaynaktırC Modern TasarımAndrei Alexandrescu, ISBN-13: 9780201704310. Bu kitap diğer şablon teknikleri ile metaprogramming biraz karıştırır. Metaprogramming için özellikle Bakınız bölüm 2.1 "Derleme Zamanı İddialar", 2.4 "Eşleme İntegral Sabitleri Türleri", 2.6 "Tür Seçimi", 2.7 "Tespit karşılığının olduğu ilan ve Miras Derleme zamanında", 2.9 "NullType EmptyType" ve 2.10 "Tip Özellikleri".

BuldumC Metaprogramming ŞablonDavid Abrahams ve Aleksey Gurtovoy,-13 ISBN: 9780321227256

Eğer sadece bir kitap tercih ediyorsanız, alınC Şablonları: Tam Kılavuzuayrıca genel şablonlar için kesin referans olduğu için.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Police

    Android Poli

    21 NİSAN 2010
  • Dive In

    Dive In

    17 Temmuz 2013
  • Julia Graf

    Julia Graf

    6 Mayıs 2006