Circus 0.0.1-alpha
C++ Serialization Framework
Loading...
Searching...
No Matches
circus_traits.hpp File Reference

Provides compile-time traits and C++20 concepts for type introspection used throughout the Circus library. More...

#include <cstdint>
#include <iostream>
#include <vector>

Go to the source code of this file.

Classes

struct  circus::traits::exists< Ts, Us >
 Checks if a type Ts exists among a variadic list of types Us. More...
struct  circus::traits::pair_inspect< T, typename >
 Trait to determine if a type is a pair-like structure (has .first and .second). More...
struct  circus::traits::pair_inspect< T, std::void_t< decltype(std::declval< T >().first), decltype(std::declval< T >().second)> >
struct  circus::traits::is_vector< T >
 Trait to determine if a type is a std::vector. More...
struct  circus::traits::is_vector< std::vector< T, A > >

Concepts

concept  circus::traits::ComparableTypes
 Concept that checks if all types match a given type.
concept  circus::traits::IsSerializable
 Concept that checks whether a type has a .serialize(std::ostream&) method.
concept  circus::traits::OutStream
 Concept that checks if a type can be used as an output stream.
concept  circus::traits::OutStreamableLiteral
 Concept for values that can be streamed using << to an std::ostream.
concept  circus::traits::InStream
 Concept that checks if a type can be used as an input stream.
concept  circus::traits::InStreamable
 Concept for values that can be extracted from an std::istream using >>.
concept  circus::traits::PairSerializable
 Concept for types that behave like key-value pairs.
concept  circus::traits::StringLike
 Concept for types that can be converted to a string-like view.
concept  circus::traits::Serializable
 Concept for types that are serializable via either literal streaming or custom serialize.
concept  circus::traits::Flaggable
 Concept for enum types that are eligible for flagging (i.e., bitmask ops).
concept  circus::traits::StreamableVector
 Concept for std::vector-like containers whose elements can be streamed.
concept  circus::traits::Container
 Concept for containers that satisfy a wide set of STL-like requirements. Includes regularity, iterator properties, size access, etc.

Detailed Description

Provides compile-time traits and C++20 concepts for type introspection used throughout the Circus library.