C ++ şablonuna metafroqramlama üçün ən yaxşı giriş?

Statik metaprogramming (şablon metaprogramma kimi də tanınır) kompilyasiya zamanı proqramları icra etməyə imkan verən əla C ++ üsuludur. Kanonik metafroqramlaşdırmanın bu nümunəsini oxuduğum müddətdə başıma bir ampul gəldi:

 #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; } 

Statik C ++ metafroqramı haqqında daha ətraflı öyrənmək istəyirsinizsə, yaxşı mənbələr hansılardır (kitablar, veb saytlar, onlayn kurslar nədir)?

104
22 сент. jwfearn tərəfindən təyin Sentyabr 22 2008-09-22 00:50 '08 saat 00:50 'da 2008-09-22 00:50
@ 8 cavab

[Öz sualımı cavablandır]

Bu günə qədər tapdığım ən yaxşı təqdimatlar 10-cu fəsildə, C ++-da Statik Metaproqramlaşdırma, Generic Proqramlaşdırma, Metodlar, Tools və Proqramlar Krzysztof Charnetsky və Ulrich V. Eisenker, ISBN-13: 9780201309775; və Fəsil 17, C ++ şablonlarının metafroqramları: David Vandevoorder və Nikolay M. Josuttis tərəfindən hazırlanmış tam təlimat, ISBN-13: 9780201734843.

alt mətn http://ak.buy.com/db_assets/prod_images/941/30676941.jpg alt mətn http://ak.buy.com/db_assets/prod_images/235/31025235.jpg alt mətn http: // ak. buy.com/db_assets/prod_images/704/30680704.jpg alt mətn http://ak.buy.com/db_assets/prod_images/218/39856218.jpg

Todd Weldhuizen burada əla tutorial var .

C ++-da bütöv bir proqramlaşdırma üçün yaxşı bir qaynaq Andrey Alexandrescu, ISBN-13: 9780201704310 tərəfindən müasir C ++ Dizaynıdır. Bu kitab digər şablon metodları ilə bir az metaproqramlaşdırma qarışır. Metaproqramlaşdırma üçün, xüsusən, 2.1-də "Kompilyasiya zamanı hesabatları", 2.4 "Türlərlə birlikdə integral sabitlərinin xəritəsi", 2.6 "Tip seçimi", 2.7 "Kompilyasiya zamanı konvertasiya və mirasın aşkarlanması", 2.9 " NullTypeEmptyType " və 2.10 "Xüsusiyyət növü".

Mən tapdığım ən yaxşı ara / geniş mənbə C ++ metafroqramlaşdırma idi, David Abraham və Alexey Gurtov tərəfindən yazılmış, ISBN-13: 9780321227256

Yalnız bir kitabı seçsəniz, C ++ Şablonları: Tam Kılavuz olsun, çünki bu da ümumi şablonların son linkidir.

99
22 сент. Cavab 22 sentyabr Cümə günü verilir 2008-09-22 00:59 '08 saat 00:59 'da 2008-09-22 00:59

+ + İlə Andrei Alexandrescu Müasir Dizayn. Kitabda, bu cür və digər tövsiyələr tez və səmərəli müasir C ++ kodunu təsvir edir və <kütləvi xref = "http://loki-lib.sourceforge.net/" rel = "noreferrer"> Loki üçün əsasdır .

border=0

Həm də qeyd etmək lazımdır ki, bu metodları əsasən istifadə edən və öyrənmək üçün çox yüksək keyfiyyətli olan Boost kitabxanalarıdır (bəzi olduqca sıx olsa da).

22
22 сент. Sep 22-də Alarik tərəfindən cavab verildi 2008-09-22 00:56 '08 at 0:56 2008-09-22 00:56

Müasir C ++ dizaynı , Alexandrescu kitabının və dizayn şablonlarının parlaq quruluşu. Bu kitabı oxuduqdan sonra xəbərdarlıq sözü, C ++ işini dayandırdım və düşündüm: "Cəhənnəm nədir, mən ən yaxşı dili seçə və onu pulsuz əldə edə bilərəm".

11
22 сент. Florian Bösch tərəfindən verilmiş cavab 22 sentyabr 2008-09-22 00:56 '08 at 0:56 2008-09-22 00:56

Ağıl edən iki yaxşı kitab:

  • Müasir dizayn C ++ / Andrei Aleksandrescu (əslində adına baxmayaraq 7 ildir!)
  • C ++ Şablonları: Tam Kılavuz / Vandevoorde və Josuttis

Bu olduqca dərin bir sahədir, onlardan biri kimi yaxşı bir kitab, saytlarda mütləq tövsiyə olunur. Daha qabaqcıl üsullardan bəziləri, necə işlədiyini anlamaq üçün bir müddət kod hazırlayacaqsınız!

6
22 сент. Cavab Nik 22 sentyabr verilir. 2008-09-22 00:59 '08 saat 00:59 'da 2008-09-22 00:59

Daha çox təcrübəyə malik insanların siyahısı məhdud olduğundan, kitabların böyük bir siyahısı olmayacaqdır. 2000-ci ildə ilk C ++ şablon proqramlaşdırma ustası ətrafında şablonların metafroqramlaşdırılması real vaxtda başlamış və indiyədək hazırlanmış bir çox müəllifdir. (IIRC, Andrey bunu etməyib.) Bu pionerlər sahəyə böyük təsir göstərmiş və əsasən yazılı nə yazılmışdır. Şəxsən Vandevarddu və Josuttisə məsləhət görürəm. Əgər sahəyə yeni baxırsan Alexandrescu çətin bir kitabdır.

5
22 сент. MSalters tərəfindən verilmiş cavab 22 sentyabr 2008-09-22 01:40 '08 at 1:40 2008-09-22 01:40

Veldhuyzen əsərləri yaxşı idi. Bir kitabın lehinə olduğunuzda Vandevoorde kitabının "C ++ Şablonlar Komple Kılavuzu" var. Master kursuna hazır olduğunuzda, Alexandrescu Modern C ++ Dizaynını sınayın.

4
22 сент. Cavab eduffy 22 sep tərəfindən verilir . 2008-09-22 00:56 '08 at 0:56 2008-09-22 00:56

Müasir C ++ oxudum ən yaxşı təqdimatlardan biridir. Şablon metaproqramlaşdırmasının faktiki, faydalı nümunələrini əhatə edir. Loki yoldaşları kitabxanasına da baxın.

4
22 сент. Cavab 22 sentyabr Eclipse tərəfindən verilir 2008-09-22 00:54 '08 at 0:54 2008-09-22 00:54

google Alexandrescu, Müasir C ++ Dizayn: ümumi proqramlaşdırma və dizayn nümunələri tətbiq olundu

3
22 сент. Maxim Ananyev tərəfindən verilmiş cavab 22 sentyabr 2008-09-22 00:53 '08 at 0:53 2008-09-22 00:53

haqqında digər suallar və ya bir sual