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

T( const T& )

Construct copy of T.

~T()

Destructor.

T* operator&()

Take address of T.

const T* operator&() const

Take address of T.

Get Intel Threading Building Blocks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.