Benefits and drawbacks of template metaprogramming[edit]
Template metaprogramming and generic programming constitute the foundation of SeqAn's design.
His research is about C++ template metaprogramming and domain specific languages.
Template metaprogramming is generally Turing-complete, meaning that any computation expressible by a computer program can be computed, in some form, by a template metaprogram.
Thus, template metaprogramming can accomplish truly generic code, facilitating code minimization and better maintainability.
The gained insights allow for general conclusions on the design of software libraries based on template metaprogramming.
It covers everything from the very basics to some of the most advanced template metaprogramming and explains every detail of how templates work (both conceptually and at how they are implemented) and discusses many common pitfalls.
Es deckt alles ab, von den Grundlagen bis hin zu den fortschrittlichsten Metaprogrammierungen für Schablonen, und erläutert jedes Detail (wie konzeptuell und wie sie implementiert werden) sowie viele häufige Fallstricke.
Thus, template metaprogramming can accomplish truly generic code, facilitating code minimization and better maintainability[citation needed].
Generische Programmierung: Templatemetaprogrammierung ermöglicht eine höhere Abstraktion. Daher kann Templatemetaprogrammierung zu kürzerem Quelltext und besserer Wartbarkeit führen.
Metaprograms can thus be difficult to maintain by programmers inexperienced in template metaprogramming (though this may vary with the language's implementation of template metaprogramming syntax).
Dadurch können Metaprogramme von Programmierern, die in Templatemetaprogrammierung unerfahren sind, schwer zu pflegen sein, insbesondere entspricht die rein funktionale Struktur nicht der üblichen Struktur von C++.
Various C++ techniques such as template programming, generic programming, C++ template metaprogramming, and static polymorphism are used.
Um die gesetzten Ziele effizient umsetzen zu können, werden verschiedene C++-Techniken wie Template Programmierung, Generische Programmierung, C++-Metaprogrammierung und statischer Polymorphismus verwendet.
With respect to C++, the syntax and idioms of template metaprogramming are esoteric compared to conventional C++ programming, and template metaprograms can be very difficult to understand.
Lesbarkeit: Verglichen mit konventioneller C++-Programmierung wirken Syntax und Schreibweisen der Templatemetaprogrammierung zunächst ungewohnt. Fortgeschrittene oder sogar die meiste nicht-triviale Templatemetaprogrammierung kann daher schwer zu verstehen sein.