Models in Generic Programming
A type models a Concept if it meets the requirements of the Concept. For example, type int models the Sortable Concept in Table 12-1 if there exists a function swap(x,y) that swaps two int values x and y. The other requirement for Sortable, specifically x<y, is already met by the built-in operator< on type int.
The library sometimes requires that a type model the CopyConstructible Concept, which is defined by the ISO C++ standard and provides fundamental operations for creating and referring to the type. Table 12-2 shows the requirements for CopyConstructible in pseudosignature form. For a type to model the CopyConstrutible Concept, it needs to implement each operation specified in Table 12-2. This way, containers and algorithms that expect CopyConstructible types will be able to use your types, too.
Table 12-2. CopyConstructible requirements
|
Pseudosignature |
Semantics |
|---|---|
|
|
Construct copy of |
|
|
Destructor. |
|
|
Take address of |
|
|
Take address of |