pupene  0.2.0
Classes | Namespaces | Typedefs | Functions
traits.h File Reference
#include <string>
Include dependency graph for traits.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pupene::is_detected< Trait, Enabler, Args >
 
struct  pupene::is_detected< Trait, std::void_t< Trait< Args... > >, Args... >
 
struct  pupene::detect::is_map_impl< T, typename >
 
struct  pupene::detect::is_map_impl< T, std::void_t< typename T::key_type, typename T::mapped_type > >
 
struct  pupene::detect::is_pup_impl< P, T, typename >
 
struct  pupene::detect::is_pup_impl< P, T, void_t< decltype(declval< P >().pup_impl(declval< T & >(), declval< const Meta & >()))> >
 
struct  pupene::Meta
 Holds name and type of objects. More...
 

Namespaces

 pupene
 
 pupene::detect
 

Typedefs

template<typename T >
using pupene::detect::begin_member = decltype(declval< T >().begin())
 
template<typename T >
using pupene::enable_if_not_puppable = typename std::enable_if_t<!is_puppable< T >()>
 
template<typename T >
using pupene::enable_if_pup_iterable = typename std::enable_if_t< is_pup_iterable< T >()>
 
template<typename T >
using pupene::enable_if_puppable = typename std::enable_if_t< is_puppable< T >()>
 
template<typename T >
using pupene::enable_if_puppable_container = typename std::enable_if_t< is_pup_container< T >()>
 
template<typename T >
using pupene::enable_if_puppable_map = typename std::enable_if_t< is_map< T >()>
 
template<typename T >
using pupene::detect::end_member = decltype(declval< T >().end())
 
template<typename T >
using pupene::detect::has_begin = is_detected< begin_member, void, T >
 
template<typename T >
using pupene::detect::has_end = is_detected< end_member, void, T >
 
template<typename T >
using pupene::detect::has_resize = is_detected< resize_member, void, T >
 
template<typename T >
using pupene::detect::has_size = is_detected< size_member, void, T >
 
template<typename T >
using pupene::detect::resize_member = decltype(declval< T >().resize(declval< uint32_t >()))
 
template<typename T >
using pupene::detect::size_member = decltype(declval< T >().size())
 

Functions

template<typename T >
constexpr bool pupene::is_map ()
 
template<typename T >
constexpr bool pupene::is_pup_container ()
 
template<typename P , typename T >
constexpr bool pupene::is_pup_impl ()
 
template<typename T >
constexpr bool pupene::is_pup_iterable ()
 
template<typename T >
constexpr bool pupene::is_puppable ()