- Functions
- Classes
- Basic Concept Checking Classes
- Iterator Concept Checking Classes
- Function Object Concept Checking Classes
- Container Concept Checking Classes
- Basic Archetype Classes
- Iterator Archetype Classes
- Function Object Archetype Classes
- Container Archetype Classes
template <class Concept>
void function_requires();
template <class Concept>
struct class_requires {
typedef ... check;
};
// Make sure that Type1 and Type2 are exactly the same type.
// If they are not, then the nested typedef for type will
// not exist and cause a compiler error.
template <class Type1, class Type2>
struct require_same {
typedef ... type;
};
// usage example
typedef typedef require_same::type req1; // this will compile OK
typedef typedef require_same::type req1; // this will cause a compiler error
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;
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;
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 {;
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;
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;
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;
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;
UNDER CONSTRUCTION