mirror of
https://github.com/boostorg/concept_check.git
synced 2026-01-26 16:52:19 +01:00
153 lines
6.4 KiB
HTML
153 lines
6.4 KiB
HTML
|
|
<h2><a name="reference">Reference</a></h2>
|
|
|
|
<OL>
|
|
<LI><a href="#functions">Functions</a></LI>
|
|
<LI><a href="#classes">Classes</a></LI>
|
|
<LI><a href="#basic-concepts">Basic Concept Checking Classes</a></LI>
|
|
<LI><a href="#iterator-concepts">Iterator Concept Checking Classes</a></LI>
|
|
<LI><a href="#function-object-concepts">Function Object Concept Checking Classes</a></LI>
|
|
<LI><a href="#container-concepts">Container Concept Checking Classes</a></LI>
|
|
<LI><a href="#basic-archetype">Basic Archetype Classes</a></LI>
|
|
<LI><a href="#iterator-archetype">Iterator Archetype Classes</a></LI>
|
|
<LI><a href="#function-object-archetype">Function Object Archetype Classes</a></LI>
|
|
<LI><a href="#container-archetype">Container Archetype Classes</a></LI>
|
|
</OL>
|
|
|
|
<h3><a name="functions">Functions</a></h3>
|
|
|
|
<pre>
|
|
template <class Concept>
|
|
void function_requires();
|
|
</pre>
|
|
|
|
<h3><a name="classes">Classes</a></h3>
|
|
<pre>
|
|
template <class Concept>
|
|
struct class_requires {
|
|
typedef ... check;
|
|
};
|
|
</pre>
|
|
|
|
<pre>
|
|
// Make sure that <i>Type1</i> and <i>Type2</i> are exactly the same type.
|
|
// If they are not, then the nested typedef for <tt>type</tt> will
|
|
// not exist and cause a compiler error.
|
|
template <class Type1, class Type2>
|
|
struct require_same {
|
|
typedef ... type;
|
|
};
|
|
// usage example
|
|
typedef typedef require_same<int,int>::type req1; // this will compile OK
|
|
typedef typedef require_same<int,float>::type req1; // this will cause a compiler error
|
|
</pre>
|
|
|
|
<h3><a name="basic-concepts">Basic Concept Checking Classes</a></h3>
|
|
|
|
<pre>
|
|
template <class T> struct Integer_concept; // Is T a built-in integer type?
|
|
template <class T> struct SignedIntegerConcept; // Is T a built-in signed integer type?
|
|
template <class X, class Y> struct ConvertibleConcept; // Is X convertible to Y?
|
|
template <class T> struct AssignableConcept;
|
|
template <class T> struct DefaultConstructibleConcept;
|
|
template <class T> struct CopyConstructibleConcept;
|
|
template <class T> struct BooleanConcept;
|
|
template <class T> struct EqualityComparableConcept;
|
|
// Is class T equality comparable on the left side with type Left?
|
|
template <class T, class Left> struct LeftEqualityComparableConcept;
|
|
template <class T> struct LessThanComparableConcept;
|
|
</pre>
|
|
|
|
<h3><a name="iterator-concepts">Iterator Concept Checking Classes</a></h3>
|
|
|
|
<pre>
|
|
template <class Iter> struct TrivialIteratorConcept;
|
|
template <class Iter> struct Mutable_TrivialIteratorConcept;
|
|
template <class Iter> struct InputIteratorConcept;
|
|
template <class Iter, class T> struct OutputIteratorConcept;
|
|
template <class Iter> struct ForwardIteratorConcept;
|
|
template <class Iter> struct Mutable_ForwardIteratorConcept;
|
|
template <class Iter> struct BidirectionalIteratorConcept;
|
|
template <class Iter> struct Mutable_BidirectionalIteratorConcept;
|
|
template <class Iter> struct RandomAccessIteratorConcept;
|
|
template <class Iter> struct Mutable_RandomAccessIteratorConcept;
|
|
</pre>
|
|
|
|
<h3><a name="function-object-concepts">Function Object Concept Checking Classes</a></h3>
|
|
|
|
<pre>
|
|
template <class Func, class Return> struct GeneratorConcept;
|
|
template <class Func, class Return, class Arg> struct UnaryFunctionConcept;
|
|
template <class Func, class Return, class First, class Second> struct BinaryFunctionConcept;
|
|
template <class Func, class Arg> struct UnaryPredicateConcept;
|
|
template <class Func, class First, class Second> struct BinaryPredicateConcept;
|
|
template <class Func, class First, class Second> struct Const_BinaryPredicateConcept {;
|
|
</pre>
|
|
|
|
<h3><a name="container-concepts">Container Concept Checking Classes</a></h3>
|
|
|
|
<pre>
|
|
template <class C> struct ContainerConcept;
|
|
template <class C> struct Mutable_ContainerConcept;
|
|
|
|
template <class C> struct ForwardContainerConcept;
|
|
template <class C> struct Mutable_ForwardContainerConcept;
|
|
|
|
template <class C> struct ReversibleContainerConcept;
|
|
template <class C> struct Mutable_ReversibleContainerConcept;
|
|
|
|
template <class C> struct RandomAccessContainerConcept;
|
|
template <class C> struct Mutable_RandomAccessContainerConcept;
|
|
|
|
template <class C> struct SequenceConcept;
|
|
template <class C> struct FrontInsertionSequenceConcept;
|
|
template <class C> struct BackInsertionSequenceConcept;
|
|
|
|
template <class C> struct AssociativeContainerConcept;
|
|
template <class C> struct UniqueAssociativeContainerConcept;
|
|
template <class C> struct MultipleAssociativeContainerConcept;
|
|
template <class C> struct SimpleAssociativeContainerConcept;
|
|
template <class C> struct PairAssociativeContainerConcept;
|
|
template <class C> struct SortedAssociativeContainerConcept;
|
|
</pre>
|
|
|
|
|
|
<h3><a name="basic-archetype">Basic Archetype Classes</a></h3>
|
|
|
|
<pre>
|
|
class null_archetype; // A type that models no concepts.
|
|
template <class Base = null_archetype> class default_constructible_archetype;
|
|
template <class Base = null_archetype> class assignable_archetype;
|
|
template <class Base = null_archetype> class copy_constructible_archetype;
|
|
template <class Left, class Base = null_archetype> class left_equality_comparable_archetype;
|
|
template <class Base = null_archetype> class equality_comparable_archetype;
|
|
template <class T, class Base = null_archetype> class convertible_to_archetype;
|
|
</pre>
|
|
|
|
<h3><a name="iterator-archetype">Iterator Archetype Classes</a></h3>
|
|
|
|
<pre>
|
|
template <class ValueType> class trivial_iterator_archetype;
|
|
template <class ValueType> class mutable_trivial_iterator_archetype;
|
|
template <class ValueType> class input_iterator_archetype;
|
|
template <class ValueType> class forward_iterator_archetype;
|
|
template <class ValueType> class bidirectional_iterator_archetype;
|
|
template <class ValueType> class random_access_iterator_archetype;
|
|
</pre>
|
|
|
|
<h3><a name="function-object-archetype">Function Object Archetype Classes</a></h3>
|
|
|
|
<pre>
|
|
template <class Arg, class Return> class unary_function_archetype;
|
|
template <class Arg1, class Arg2, class Return> class binary_function_archetype;
|
|
template <class Arg> class predicate_archetype;
|
|
template <class Arg1, class Arg2> class binary_predicate_archetype;
|
|
</pre>
|
|
|
|
<h3><a name="container-archetype">Container Archetype Classes</a></h3>
|
|
|
|
<pre>
|
|
UNDER CONSTRUCTION
|
|
</pre>
|
|
|