scnlib  0.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
util.h File Reference
#include "config.h"
#include <cstddef>
#include <limits>
#include <new>
#include <type_traits>
#include <utility>

Go to the source code of this file.

Classes

struct  scn::detail::make_void< Ts >
 
struct  scn::detail::remove_cvref< T >
 
struct  scn::detail::static_const< T >
 
struct  scn::detail::priority_tag< I >
 
struct  scn::detail::priority_tag< 0 >
 
struct  scn::detail::dependent_false< T >
 
struct  scn::detail::nonesuch
 
struct  scn::detail::_test< Void, Trait, Args >
 
struct  scn::detail::_test< void_t< Trait< Args...> >, Trait, Args...>
 
struct  scn::detail::exists_helper< Void, AliasT, Args >
 
struct  scn::detail::exists_helper< void_t< AliasT< Args...> >, AliasT, Args...>
 
struct  scn::detail::exists< AliasT, Args >
 
struct  scn::detail::_requires< R, Args >
 
struct  scn::detail::get_common_type<>
 
struct  scn::detail::_copy_cv< T, U >
 
struct  scn::detail::_copy_cv< const T, U >
 
struct  scn::detail::_copy_cv< volatile T, U >
 
struct  scn::detail::_copy_cv< const volatile T, U >
 
struct  scn::detail::_rref_res< T >
 
struct  scn::detail::_rref_res< T & >
 
struct  scn::detail::simple_common_reference< T, U >
 
struct  scn::detail::lvalue_simple_common_reference< T, U, C >
 
struct  scn::detail::simple_common_reference< T &, U & >
 
struct  scn::detail::rvalue_simple_common_reference< T, U, LCR, C >
 
struct  scn::detail::simple_common_reference< T &&, U && >
 
struct  scn::detail::mixed_simple_common_reference< A, B, C >
 
struct  scn::detail::simple_common_reference< A &, B && >
 
struct  scn::detail::simple_common_reference< A &&, B & >
 
struct  scn::detail::xref< typename >
 
struct  scn::detail::xref< A & >
 
struct  scn::detail::xref< A && >
 
struct  scn::detail::xref< const A >
 
struct  scn::detail::xref< volatile A >
 
struct  scn::detail::xref< const volatile A >
 
struct  scn::detail::basic_common_reference< T, U, TQual, UQual >
 
struct  scn::detail::get_common_reference<>
 
struct  scn::detail::get_common_reference<>
 
struct  scn::detail::get_common_reference< T0 >
 
struct  scn::detail::has_simple_common_ref< T, U >
 
struct  scn::detail::has_basic_common_ref< T, U >
 
struct  scn::detail::has_cond_res< T, U >
 
struct  scn::detail::binary_common_ref< T, U, typename >
 
struct  scn::detail::binary_common_ref< T, U, typename std::enable_if< has_simple_common_ref< T, U >::value >::type >
 
struct  scn::detail::binary_common_ref< T, U, typename std::enable_if< has_basic_common_ref< T, U >::value &&!has_simple_common_ref< T, U >::value >::type >
 
struct  scn::detail::binary_common_ref< T, U, typename std::enable_if< has_cond_res< T, U >::value &&!has_basic_common_ref< T, U >::value &&!has_simple_common_ref< T, U >::value >::type >
 
struct  scn::detail::get_common_reference< T1, T2 >
 
struct  scn::detail::multiple_common_reference< Void, T1, T2, Rest >
 
struct  scn::detail::multiple_common_reference< void_t< get_common_reference_t< T1, T2 > >, T1, T2, Rest...>
 
struct  scn::detail::get_common_reference< T1, T2, Rest...>
 
struct  scn::detail::_same_decayed< T, U >
 
struct  scn::detail::binary_common_type< typename, typename, typename >
 
struct  scn::detail::binary_common_type< T, U, typename std::enable_if<!_same_decayed< T, U >::value >::type >
 
struct  scn::detail::binary_common_type< T, U, typename std::enable_if< _same_decayed< T, U >::value &&exists< ternary_return_t, T, U >::value >::type >
 
struct  scn::detail::binary_common_type< T, U, typename std::enable_if< _same_decayed< T, U >::value &&!exists< ternary_return_t, T, U >::value &&exists< _cond_res_t, _cref_t< T >, _cref_t< U > >::value >::type >
 
struct  scn::detail::get_common_type<>
 
struct  scn::detail::get_common_type< T >
 
struct  scn::detail::get_common_type< T, U >
 
struct  scn::detail::multiple_common_type< Void, >
 
struct  scn::detail::multiple_common_type< void_t< get_common_type_t< T1, T2 > >, T1, T2, R...>
 
struct  scn::detail::get_common_type< T1, T2, R...>
 
class  scn::detail::unique_ptr< T >
 
struct  scn::detail::array< T, N >
 
class  scn::detail::erased_storage< T >
 
class  scn::wrap_default< T >
 

Namespaces

 scn
 
 scn::detail
 

Typedefs

template<typename... Ts>
using scn::detail::void_t = typename make_void< Ts...>::type
 
template<typename T >
using scn::detail::remove_cvref_t = typename remove_cvref< T >::type
 
template<template< class...> class Trait, typename... Args>
using scn::detail::_test_t = typename _test< void, Trait, Args...>::type
 
template<typename R , typename... Args>
using scn::detail::test_requires_t = decltype(test_requires< R, Args...>(std::declval< R & >()))
 
template<bool Expr>
using scn::detail::requires_expr = typename std::enable_if< Expr, int >::type
 
template<typename T , typename U >
using scn::detail::_copy_cv_t = typename _copy_cv< T, U >::type
 
template<typename T >
using scn::detail::_cref_t = typename std::add_lvalue_reference< const typename std::remove_reference< T >::type >::type
 
template<typename T >
using scn::detail::_rref_res_t = typename _rref_res< T >::type
 
template<typename T , typename U >
using scn::detail::_cond_res_t = decltype(std::declval< bool >()?std::declval< T(&)()>()():std::declval< U(&)()>()())
 
template<typename T , typename U >
using scn::detail::lvalue_scr_t = typename lvalue_simple_common_reference< T, U >::type
 
template<typename T , typename U >
using scn::detail::simple_common_reference_t = typename simple_common_reference< T, U >::type
 
template<typename... Ts>
using scn::detail::get_common_reference_t = typename get_common_reference< Ts...>::type
 
template<typename T , typename U >
using scn::detail::basic_common_ref_t = typename basic_common_reference< remove_cvref_t< T >, remove_cvref_t< U >, xref< T >::template type, xref< U >::template type >::type
 
template<typename... Ts>
using scn::detail::get_common_type_t = typename get_common_type< Ts...>::type
 
template<typename T , typename U >
using scn::detail::ternary_return_t = typename std::decay< decltype(false?std::declval< T >():std::declval< U >())>::type
 

Functions

template<typename... T>
void scn::detail::valid_expr (T &&...)
 
template<typename R , typename... Args, typename = decltype(&R::template _test_requires<Args...>)>
auto scn::detail::test_requires (R &) -> void
 
template<typename T >
constexpr std::decay< T >::type scn::detail::decay_copy (T &&t) noexcept(noexcept(static_cast< typename std::decay< T >::type >(std::forward< T >(t))))
 
template<typename Integral >
SCN_CONSTEXPR14 int scn::detail::_max_digits (int base) noexcept
 
template<typename Integral >
SCN_CONSTEXPR14 int scn::detail::max_digits (int base) noexcept
 
template<typename T >
constexpr std::pair< T, T > scn::detail::div (T l, T r) noexcept
 
template<typename T >
constexpr T * scn::detail::launder (T *p) noexcept
 
template<typename CharT >
CharT scn::detail::ascii_widen (char ch)
 
template<>
constexpr char scn::detail::ascii_widen (char ch)
 
template<>
constexpr wchar_t scn::detail::ascii_widen (char ch)
 
template<typename T >
constexpr T scn::detail::max (T a, T b) noexcept
 
template<typename It >
SCN_CONSTEXPR14 It scn::detail::min_element (It first, It last)
 
template<typename T >
constexpr T scn::detail::min (T a, T b) noexcept
 
template<typename T >
SCN_CONSTEXPR14scn::detail::min (std::initializer_list< T > list) noexcept
 
template<typename CharT >
bool scn::detail::is_base_digit (CharT ch, int base)
 
template<typename T , typename... Args>
SCN_CLANG_PUSH unique_ptr< T > scn::detail::make_unique (Args &&...a)