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
|