18 Concepts library [concepts]

18.3 Header <concepts> synopsis [concepts.syn]

namespace std {
  // [concepts.lang], language-related concepts
  // [concept.same], concept Same
  template<class T, class U>
    concept Same = see below;

  // [concept.derivedfrom], concept DerivedFrom
  template<class Derived, class Base>
    concept DerivedFrom = see below;

  // [concept.convertibleto], concept ConvertibleTo
  template<class From, class To>
    concept ConvertibleTo = see below;

  // [concept.commonref], concept CommonReference
  template<class T, class U>
    concept CommonReference = see below;

  // [concept.common], concept Common
  template<class T, class U>
    concept Common = see below;

  // [concepts.integral], integral concepts
  template<class T>
    concept Integral = see below;
  template<class T>
    concept SignedIntegral = see below;
  template<class T>
    concept UnsignedIntegral = see below;

  // [concept.assignable], concept Assignable
  template<class LHS, class RHS>
    concept Assignable = see below;

  // [concept.swappable], concept Swappable
  namespace ranges {
    inline namespace unspecified {
      inline constexpr unspecified swap = unspecified;
    }
  }
  template<class T>
    concept Swappable = see below;
  template<class T, class U>
    concept SwappableWith = see below;

  // [concept.destructible], concept Destructible
  template<class T>
    concept Destructible = see below;

  // [concept.constructible], concept Constructible
  template<class T, class... Args>
    concept Constructible = see below;

  // [concept.defaultconstructible], concept DefaultConstructible
  template<class T>
    concept DefaultConstructible = see below;

  // [concept.moveconstructible], concept MoveConstructible
  template<class T>
    concept MoveConstructible = see below;

  // [concept.copyconstructible], concept CopyConstructible
  template<class T>
    concept CopyConstructible = see below;

  // [concepts.compare], comparison concepts
  // [concept.boolean], concept Boolean
  template<class B>
    concept Boolean = see below;

  // [concept.equalitycomparable], concept EqualityComparable
  template<class T>
    concept EqualityComparable = see below;
  template<class T, class U>
    concept EqualityComparableWith = see below;

  // [concept.stricttotallyordered], concept StrictTotallyOrdered
  template<class T>
    concept StrictTotallyOrdered = see below;
  template<class T, class U>
    concept StrictTotallyOrderedWith = see below;

  // [concepts.object], object concepts
  template<class T>
    concept Movable = see below;
  template<class T>
    concept Copyable = see below;
  template<class T>
    concept Semiregular = see below;
  template<class T>
    concept Regular = see below;

  // [concepts.callable], callable concepts
  // [concept.invocable], concept Invocable
  template<class F, class... Args>
    concept Invocable = see below;

  // [concept.regularinvocable], concept RegularInvocable
  template<class F, class... Args>
    concept RegularInvocable = see below;

  // [concept.predicate], concept Predicate
  template<class F, class... Args>
    concept Predicate = see below;

  // [concept.relation], concept Relation
  template<class R, class T, class U>
    concept Relation = see below;

  // [concept.strictweakorder], concept StrictWeakOrder
  template<class R, class T, class U>
    concept StrictWeakOrder = see below;
}