NCBI C++ ToolKit
Classes | Namespaces | Macros | Typedefs | Functions | Variables
compile_time_bits.hpp File Reference
#include <type_traits>
#include <cstdint>
#include <limits>
#include <stdexcept>
#include <array>
#include "ct_string_cxx17.hpp"
#include "ctsort_cxx14.hpp"
#include "ct_crc32.hpp"
+ Include dependency graph for compile_time_bits.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Go to the SVN repository for this file.

Classes

struct  std::remove_cvref< T >
 
struct  compile_time_bits::array_size< T >
 
struct  compile_time_bits::array_size< T & >
 
struct  compile_time_bits::array_size< std::array< T, N > >
 
struct  compile_time_bits::array_size< T[N]>
 
struct  compile_time_bits::array_elem< T >
 
struct  compile_time_bits::array_elem< T & >
 
struct  compile_time_bits::array_elem< T && >
 
struct  compile_time_bits::array_elem< T[N]>
 
struct  compile_time_bits::array_elem< std::array< T, N > >
 
struct  compile_time_bits::real_underlying_type< T, _Unused >
 
struct  compile_time_bits::real_underlying_type< T, std::enable_if_t< std::is_enum< T >::value, T > >
 
struct  compile_time_bits::DeduceType< _BaseType, _BackType >
 
struct  compile_time_bits::DeduceType< _BaseType, std::enable_if_t< std::is_enum< _BaseType >::value||std::numeric_limits< _BaseType >::is_integer, _BaseType > >
 
struct  compile_time_bits::StringType< _CharType, tag >
 
struct  compile_time_bits::is_string_type< typename, typename >
 
struct  compile_time_bits::is_string_type< _T, std::void_t< typename _T::case_tag > >
 
struct  compile_time_bits::DeduceType< tagStrCase >
 
struct  compile_time_bits::DeduceType< tagStrNocase >
 
struct  compile_time_bits::DeduceType< _CharType *, std::enable_if_t< std::is_same< _CharType, char >::value||std::is_same< _CharType, wchar_t >::value||std::is_same< _CharType, char16_t >::value||std::is_same< _CharType, char32_t >::value, _CharType * > >
 
struct  compile_time_bits::DeduceType< const T * >
 
struct  compile_time_bits::DeduceType< T, std::enable_if_t< std::is_same< T, ncbi::CTempString >::value||std::is_same< T, ncbi::CTempStringEx >::value, T > >
 
struct  compile_time_bits::DeduceType< ct_basic_string< _CharType > >
 
struct  compile_time_bits::DeduceType< std::basic_string< _CharType, Traits, Allocator > >
 
struct  compile_time_bits::DeduceType< std::basic_string_view< _CharType, Traits > >
 
struct  compile_time_bits::DeduceType< std::pair< _Types... > >
 
struct  compile_time_bits::DeduceType< std::tuple< _Types... > >
 
struct  compile_time_bits::DeduceType< _Self, std::enable_if_t< std::is_copy_constructible< typename _Self::init_type >::value &&std::is_copy_constructible< typename _Self::value_type >::value, _Self > >
 
struct  compile_time_bits::DeduceHashedType< T >
 
class  compile_time_bits::const_vector< _Type >
 
struct  compile_time_bits::simple_sort_traits< _Ty >
 
struct  compile_time_bits::straight_map_traits< _T1, _T2 >
 
struct  compile_time_bits::reverse_map_traits< _T1, _T2 >
 
class  compile_time_bits::simple_backend< _ProxyType >
 
class  compile_time_bits::simple_backend< std::pair< _SizeType, _ArrayType > >
 
class  compile_time_bits::simple_backend< std::tuple< _SizeType, _ArrayType, _IndexType > >
 
class  compile_time_bits::presorted_backend< _ArrayType >
 
class  compile_time_bits::portable_backend< _IndexType, _ValueType >
 
class  compile_time_bits::const_set_map_base< _Traits, _Backend, _Duplicates >
 
struct  compile_time_bits::const_set_map_base< _Traits, _Backend, _Duplicates >::value_compare
 
struct  compile_time_bits::const_set_map_base< _Traits, _Backend, _Duplicates >::hash_compare
 

Namespaces

 ncbi
 Magic spell ;-) needed for some weird compilers... very empiric.
 
 compile_time_bits
 

Macros

#define ct_const_tuple   std::tuple
 
#define const_tuple   std::tuple
 
#define ct_const_array   std::array
 
#define const_array   std::array
 

Typedefs

template<class T >
using std::remove_cvref_t = typename remove_cvref< T >::type
 
template<typename T >
using compile_time_bits::array_elem_t = typename array_elem< T >::type
 
template<typename T >
using compile_time_bits::real_underlying_type_t = typename real_underlying_type< T >::type
 
using compile_time_bits::tag_DuplicatesYes = std::true_type
 
using compile_time_bits::tag_DuplicatesNo = std::false_type
 
using compile_time_bits::tag_SortByHashes = std::true_type
 
using compile_time_bits::tag_SortByValues = std::false_type
 

Functions

template<class Enum >
constexpr std::underlying_type_t< Enum > std::to_underlying (Enum e) noexcept
 
template<typename T >
constexpr size_t compile_time_bits::get_array_size (T &&)
 
template<typename T , size_t N = array_size<T>::value, typename _Elem = array_elem_t<T>, std::size_t... I>
constexpr auto compile_time_bits::to_array_impl (T &&a, std::index_sequence< I... >) -> std::array< _Elem, N >
 
template<typename T , size_t N = array_size<T>::value>
constexpr auto compile_time_bits::make_array (T &&a)
 
template<typename T , size_t N>
constexpr auto compile_time_bits::make_array (T const (&a)[N])
 
template<typename... TArgs, size_t N = sizeof...(TArgs), typename _Tuple = typename std::enable_if<(N>1), std::tuple<TArgs...>>::type, typename T = std::tuple_element_t<0, _Tuple>>
constexpr auto compile_time_bits::make_array (TArgs &&...args)
 
template<class Enum >
constexpr real_underlying_type_t< Enum > compile_time_bits::to_real_underlying (Enum e) noexcept
 
template<typename... TArgs>
constexpr size_t std::size (const compile_time_bits::const_set_map_base< TArgs... > &_container)
 

Variables

constexpr size_t std::hardware_destructive_interference_size = 64
 
constexpr size_t std::hardware_constructive_interference_size = 64
 

Macro Definition Documentation

◆ const_array

#define const_array   std::array

Definition at line 84 of file compile_time_bits.hpp.

◆ const_tuple

#define const_tuple   std::tuple

Definition at line 80 of file compile_time_bits.hpp.

◆ ct_const_array

#define ct_const_array   std::array

Definition at line 83 of file compile_time_bits.hpp.

◆ ct_const_tuple

#define ct_const_tuple   std::tuple

Definition at line 79 of file compile_time_bits.hpp.

Typedef Documentation

◆ remove_cvref_t

template<class T >
using std::remove_cvref_t = typedef typename remove_cvref<T>::type

Definition at line 60 of file compile_time_bits.hpp.

Function Documentation

◆ size()

template<typename... TArgs>
constexpr size_t std::size ( const compile_time_bits::const_set_map_base< TArgs... > &  _container)
constexpr

◆ to_underlying()

template<class Enum >
constexpr std::underlying_type_t<Enum> std::to_underlying ( Enum  e)
constexprnoexcept

Definition at line 66 of file compile_time_bits.hpp.

References std::to_underlying().

Referenced by std::to_underlying().

Variable Documentation

◆ hardware_constructive_interference_size

constexpr size_t std::hardware_constructive_interference_size = 64
constexpr

Definition at line 93 of file compile_time_bits.hpp.

◆ hardware_destructive_interference_size

constexpr size_t std::hardware_destructive_interference_size = 64
constexpr

Definition at line 92 of file compile_time_bits.hpp.

Modified on Wed Dec 06 07:15:33 2023 by modify_doxy.py rev. 669887