PlayRho  2.0.0
An interactive physics engine & library.
Templates.hpp File Reference

Low-level declarations for general class & function templates. More...

#include <algorithm>
#include <iterator>
#include <type_traits>
#include <utility>
Include dependency graph for Templates.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  playrho::detail::detector< Default, AlwaysVoid, Op, Args >
 Detector class template. More...
 
struct  playrho::detail::detector< Default, std::void_t< Op< Args... > >, Op, Args... >
 Detected class template specialized for successful detection. More...
 
struct  playrho::detail::HasFunctor< typename, T >
 Has-functor trait template fallback class. More...
 
struct  playrho::detail::HasFunctor< Type, Return(Args...)>
 Has-functor trait template class. More...
 
struct  playrho::detail::is_narrowing_conversion< From, To >
 Is narrowing conversion trait. More...
 
struct  playrho::detail::is_narrowing_conversion_impl< From, To, typename >
 Is narrowing conversion implementation true trait. More...
 
struct  playrho::detail::is_narrowing_conversion_impl< From, To, std::void_t< decltype(To{std::declval< From >()})> >
 Is narrowing conversion implementation false trait. More...
 
struct  playrho::detail::IsAddable< T1, T2, class >
 Template for determining if the given types are addable. More...
 
struct  playrho::detail::IsAddable< T1, T2, std::void_t< decltype(T1{}+T2{})> >
 Template specializing for addable types. More...
 
struct  playrho::detail::IsArithmetic< T, class >
 Template for determining if the given type is an "arithmetic" type. More...
 
struct  playrho::detail::IsArithmetic< T, std::void_t< decltype(T{}+T{}), decltype(T{} - T{}), decltype(T{} *T{}), decltype(T{}/T{})> >
 Template specialization for valid/acceptable "arithmetic" types. More...
 
struct  playrho::detail::IsDivisable< T1, T2, class >
 Template for determining if the given types are divisable. More...
 
struct  playrho::detail::IsDivisable< T1, T2, std::void_t< decltype(T1{}/T2{})> >
 Template specializing for divisable types. More...
 
struct  playrho::detail::IsEqualityComparable< T1, T2, class >
 Template for determining if the given type is an equality comparable type. More...
 
struct  playrho::detail::IsEqualityComparable< T1, T2, std::void_t< decltype(T1{}==T2{})> >
 Template specialization for equality comparable types. More...
 
struct  playrho::detail::IsInequalityComparable< T1, T2, class >
 Template for determining if the given type is an inequality comparable type. More...
 
struct  playrho::detail::IsInequalityComparable< T1, T2, std::void_t< decltype(T1{} !=T2{})> >
 Template specialization for inequality comparable types. More...
 
struct  playrho::detail::IsIterable< T, class >
 Low-level implementation of the is-iterable default value trait. More...
 
struct  playrho::detail::IsIterable< T, std::void_t< decltype(begin(std::declval< T >())), decltype(end(std::declval< T >())), decltype(++std::declval< decltype(begin(std::declval< T & >()))& >()), decltype(*begin(std::declval< T >()))> >
 Low-level implementation of the is-iterable true value trait. More...
 
struct  playrho::detail::IsMultipliable< T1, T2, class >
 Template for determining if the given types are multipliable. More...
 
struct  playrho::detail::IsMultipliable< T1, T2, std::void_t< decltype(T1{} *T2{})> >
 Template specializing for multipliable types. More...
 
struct  playrho::detail::IsReverseIterable< T, class >
 Low-level implementation of the is-reverse-iterable default value trait. More...
 
struct  playrho::detail::IsReverseIterable< T, std::void_t< decltype(rbegin(std::declval< T >())), decltype(rend(std::declval< T >())), decltype(++std::declval< decltype(rbegin(std::declval< T & >()))& >()), decltype(*rbegin(std::declval< T >()))> >
 Low-level implementation of the is-reverse-iterable true value trait. More...
 
struct  playrho::detail::nonesuch
 None such type. More...
 

Namespaces

 playrho
 
 playrho::detail
 

Typedefs

template<template< class... > class Op, class... Args>
using playrho::detail::is_detected = typename detector< nonesuch, void, Op, Args... >::value_t
 Is-detected value type. More...
 

Functions

template<class T >
constexpr auto playrho::detail::IsFull (const T &arg) -> decltype(size(arg)==max_size(arg))
 Checks whether the given container is full.
 
template<class T >
constexpr auto playrho::detail::max_size (const T &arg) -> decltype(arg.max_size())
 Gets the maximum size of the given container.
 

Variables

template<template< class... > class Op, class... Args>
constexpr bool playrho::detail::is_detected_v = is_detected<Op, Args...>::value
 Is-detected-value. More...
 

Detailed Description

Low-level declarations for general class & function templates.