Namespaces
Variants

Archetype

From cppreference.com
 
 
C++ language
General topics
Flow control
Conditional execution statements
if
Iteration statements (loops)
for
range-for (C++11)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications (until C++17*)
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
explicit (C++11)
static

Special member functions
Templates
Miscellaneous
 

Archetypes are classes that help template library developers ensure that a template only relies on behavior specified in the concept requirements. Archetypes provide the minimal amount of operations such that a template can be instantiated and nothing more. Typically, archetypes are meant as compile-time aids only and will fail to link. When substituting an archetype as a template parameter, if template instantiation succeeds, then we know that the template does not use any operations it does not explicitly require.

External links

1.  David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor (2017), C++ Templates - The Complete Guide, 2nd Edition
2.  David Abrahams, Douglas Gregor (2011), Generic Programming in C++: Techniques