Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/named req"

From cppreference.com
< cpp
(it's probably worth making sure there's a distinction between 'requirements' and 'concepts')
Line 69: Line 69:
 
{{dcl list concept | cpp/concept/pos_type}}
 
{{dcl list concept | cpp/concept/pos_type}}
 
{{dcl list concept | cpp/concept/off_type}}
 
{{dcl list concept | cpp/concept/off_type}}
 +
{{dcl list concept | cpp/concept/Predicate}}
 +
{{dcl list concept | cpp/concept/BinaryPredicate}}
  
 
{{dcl list end}}
 
{{dcl list end}}

Revision as of 10:51, 22 March 2012

Template:cpp/concept/sidebar

Concept is a term that describes a set of characteristics of a type. Concepts are a more convenient way to specify both what properties are expected from a type, and what properties a type has.

There was a proposal to include formal specification of concepts into C++11 so that the compiler could check the type requirements before template instantiation and in turn could produce much more sensible error messages in case a type did not fulfill the template requirements. This proposal was later dropped for various reasons. However, there are unofficial plans to add concepts to a future revision of the C++ language.

C++03 and C++11 define behavior in terms of requirements, which are similar to concepts, and are listed below.

Contents

Basic

specifies that type has default constructor
(concept)
specifies that type has move constructor
(concept)
specifies that type has copy constructor
(concept)
specifies that type can move assignment operator
(concept)
specifies that type has copy assignment operator
(concept)
type has a destructor that clears all memory
(concept)

Library-wide

has a working operator== that is an equivalence relation
(concept)
operator< is a strict weak ordering relation
(concept)
(C++11)
can be used as argument of Template:cpp
(concept)
Pointer-like type that when dereferenced can be passed to Template:cpp
(concept)
Pointer-like type supporting a null value
(concept)
(C++11)

(concept)
Class type that contains allocation information
(concept)

Container

data structure that allows element access using iterators
(concept)
container using bidirectional iterators
(concept)
container using an allocator
(concept)
container with elements stored linearly
(concept)
container that stores elements by associating them to keys
(concept)
container that stores elements stored in buckets by associating them to keys
(concept)
Container element

(concept)

(concept)

(concept)

Iterator

general concept to access data within some data structure
(concept)
iterator that can be used to read data
(concept)
iterator that can be used to write data
(concept)
iterator that can be used to read data multiple times
(concept)
iterator that can be both incremented and decremented
(concept)
iterator that can be advanced in constant time
(concept)

Random Number Generation


(concept)

(concept)

(concept)

(concept)

(concept)

Concurrency


(concept)
(C++11)

(concept)

(concept)
(C++11)

(concept)

(concept)

Other


(concept)

(concept)

(concept)
(C++11)

(concept)

(concept)

(concept)

(concept)

(concept)

(concept)

(concept)