Circus 0.0.1-alpha
C++ Serialization Framework
Loading...
Searching...
No Matches
circus::traits::Container Concept Reference

Concept for containers that satisfy a wide set of STL-like requirements. Includes regularity, iterator properties, size access, etc. More...

#include <circus_traits.hpp>

Concept definition

template<class T>
concept circus::traits::Container = requires(T a, const T b) {
requires std::regular<T>;
requires std::swappable<T>;
requires std::same_as<typename T::reference, typename T::value_type &>;
requires std::same_as<typename T::const_reference, const typename T::value_type &>;
requires std::forward_iterator<typename T::iterator>;
requires std::forward_iterator<typename T::const_iterator>;
requires std::signed_integral<typename T::difference_type>;
requires std::same_as<typename T::difference_type, typename std::iterator_traits<typename T::iterator>::difference_type>;
requires std::same_as<typename T::difference_type, typename std::iterator_traits<typename T::const_iterator>::difference_type>;
{ a.begin() } -> std::same_as<typename T::iterator>;
{ a.end() } -> std::same_as<typename T::iterator>;
{ b.begin() } -> std::same_as<typename T::const_iterator>;
{ b.end() } -> std::same_as<typename T::const_iterator>;
{ a.cbegin() } -> std::same_as<typename T::const_iterator>;
{ a.cend() } -> std::same_as<typename T::const_iterator>;
{ a.size() } -> std::same_as<typename T::size_type>;
{ a.max_size() } -> std::same_as<typename T::size_type>;
{ a.empty() } -> std::convertible_to<bool>;
}
Concept for containers that satisfy a wide set of STL-like requirements. Includes regularity,...
Definition circus_traits.hpp:140

Detailed Description

Concept for containers that satisfy a wide set of STL-like requirements. Includes regularity, iterator properties, size access, etc.