Namespaces
Variants
Standard revision:
Views
Actions

Archetype

From cppreference.com
< cpp‎ | language
 
 
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.

[edit] 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