BitStream
meta.h File Reference
#include "../stream/serialize_traits.h"
#include <type_traits>

Go to the source code of this file.

Classes

struct  bitstream::utility::has_serialize< Void, T, Stream, Args >
 
struct  bitstream::utility::has_serialize< std::void_t< decltype(serialize_traits< T >::serialize(std::declval< Stream & >(), std::declval< Args >()...))>, T, Stream, Args... >
 
struct  bitstream::utility::is_serialize_noexcept< Void, T, Stream, Args >
 
struct  bitstream::utility::is_serialize_noexcept< std::enable_if_t< has_serialize_v< T, Stream, Args... > >, T, Stream, Args... >
 
struct  bitstream::utility::deduce_trait< Void, Trait, Stream, Args >
 
struct  bitstream::utility::deduce_trait< std::enable_if_t< !std::is_pointer_v< std::decay_t< Trait > > &&has_serialize_v< base_t< Trait >, Stream, Trait, Args... > >, Trait, Stream, Args... >
 
struct  bitstream::utility::deduce_trait< std::enable_if_t< !std::is_pointer_v< std::decay_t< Trait > > &&has_serialize_v< std::add_const_t< base_t< Trait > >, Stream, Trait, Args... > >, Trait, Stream, Args... >
 
struct  bitstream::utility::deduce_trait< std::enable_if_t< std::is_pointer_v< std::decay_t< Trait > > &&has_serialize_v< std::add_pointer_t< base_t< Trait > >, Stream, Trait, Args... > >, Trait, Stream, Args... >
 
struct  bitstream::utility::deduce_trait< std::enable_if_t< std::is_pointer_v< std::decay_t< Trait > > &&has_serialize_v< std::add_pointer_t< std::add_const_t< base_t< Trait > > >, Stream, Trait, Args... > >, Trait, Stream, Args... >
 

Namespaces

 bitstream
 
 bitstream::utility
 

Typedefs

template<typename T , typename Stream , typename... Args>
using bitstream::utility::has_serialize_t = std::void_t< decltype(serialize_traits< T >::serialize(std::declval< Stream & >(), std::declval< Args >()...))>
 
template<typename T , typename R = bool>
using bitstream::utility::is_writing_t = std::enable_if_t< T::writing, R >
 
template<typename T , typename R = bool>
using bitstream::utility::is_reading_t = std::enable_if_t< T::reading, R >
 
template<typename T >
using bitstream::utility::base_t = typename std::remove_const_t< std::remove_pointer_t< std::decay_t< T > >>
 
template<typename Trait , typename Stream , typename... Args>
using bitstream::utility::deduce_trait_t = typename deduce_trait< void, Trait, Stream, Args... >::type
 
template<typename Trait , typename Stream , typename... Args>
using bitstream::utility::has_deduce_serialize_t = has_serialize_t< deduce_trait_t< Trait, Stream, Args... >, Stream, Trait, Args... >
 

Variables

template<typename T , typename Stream , typename... Args>
constexpr bool bitstream::utility::has_serialize_v = has_serialize<void, T, Stream, Args...>::value
 
template<typename T , typename Stream , typename... Args>
constexpr bool bitstream::utility::is_serialize_noexcept_v = is_serialize_noexcept<void, T, Stream, Args...>::value
 
template<typename Trait , typename Stream , typename... Args>
constexpr bool bitstream::utility::is_deduce_serialize_noexcept_v = is_serialize_noexcept_v<deduce_trait_t<Trait, Stream, Args...>, Stream, Trait, Args...>