Template metaprogramming

GPTKB entity

Statements (49)
Predicate Object
gptkbp:instanceOf Programming technique
gptkbp:alternativeTo Macros
Code generation tools
constexpr metaprogramming
gptkbp:documentedIn gptkb:Modern_C++_Design
gptkb:C++_Template_Metaprogramming:_Concepts,_Tools,_and_Techniques_from_Boost_and_Beyond
gptkb:C++_Templates:_The_Complete_Guide
gptkbp:enables Code generation
Compile-time computation
Type manipulation
https://www.w3.org/2000/01/rdf-schema#label Template metaprogramming
gptkbp:implementedIn CRTP
Compile-time dispatch
Expression templates
Factorial at compile time
Fibonacci at compile time
Policy-based design
Static assertions
Static polymorphism
Tag dispatching
Traits classes
Type lists
Type selection
gptkbp:improves gptkb:C++11
gptkb:C++14
gptkb:C++17
gptkb:C++20
gptkbp:introducedIn gptkb:C++98
gptkbp:limitation Steep learning curve
Complex error messages
Difficult to debug
Limited by template recursion depth
Longer compile times
gptkbp:notableContributor gptkb:Andrei_Alexandrescu
gptkb:David_Abrahams
gptkb:Aleksey_Gurtovoy
gptkbp:notableExample gptkb:Loki_library
Boost Hana
Boost MPL
gptkbp:relatedTo gptkb:C++_templates
Generic programming
constexpr
Metaprogramming
Type traits
SFINAE
gptkbp:usedIn gptkb:C++
gptkbp:uses Templates
gptkbp:bfsParent gptkb:std::integer_sequence
gptkbp:bfsLayer 7