C++ Library Extensions 2022.12.09
To help learn modern C++ programming
stl_extensions::hidden Namespace Reference

Classes

struct  st_tuple_scalar_signed_cast
 
struct  st_tuple_scalar_signed_cast< std::tuple< Types... >, ScalarType >
 
struct  st_tuple_scalar_unsigned_cast
 
struct  st_tuple_scalar_unsigned_cast< std::tuple< Types... >, ScalarType >
 

Typedefs

template<typename TupleA , typename... TupleTypes>
using tuple_cross_product_t = decltype((TupleA{} > > ... > > TupleTypes{}))
 
template<typename TupleA , typename TupleB >
using common_signed_tuple_pair = decltype(fn_common_signed_tuple(TupleA{}, TupleB{}))
 
template<cgt::tuple_flat_c TupleA, cgt::tuple_flat_c TupleB>
using common_unsigned_tuple_pair = decltype(fn_common_unsigned_tuple(TupleA{}, TupleB{}))
 
template<cgt::tuple_flat_c TupleType, cgt::tuple_flat_c... TupleTypes>
using common_signed_tuple_t = decltype(hidden::fn_common_signed_tuples(TupleType{}, TupleTypes{}...))
 
template<cgt::tuple_flat_c TupleType, cgt::tuple_flat_c... TupleTypes>
using common_unsigned_tuple_t = decltype(hidden::fn_common_unsigned_tuples(TupleType{}, TupleTypes{}...))
 

Functions

template<typename S , typename T >
requires requires { s + t; }
auto fn_common_container_type (S s, T t)
 
template<typename... Ts, typename... Ss>
constexpr auto tuple_connect_tail (std::tuple< Ts... >, std::tuple< Ss... >)
 
template<typename T , typename... Ss>
constexpr auto tuple_pairs (T, std::tuple< Ss... >)
 
template<typename... Ts, typename... Ss>
constexpr auto tuple_pairs (std::tuple< Ts... >, std::tuple< Ss... >)
 
template<typename... TT, typename T , typename... Ts, typename... Ss>
constexpr auto fn_tuple_cross_product (std::tuple< TT... > tt, std::tuple< T, Ts... > t, std::tuple< Ss... > s)
 
template<typename L , typename R >
constexpr auto fn_common_signed_tuple (L const &, R const &)
 
template<typename... Ls, typename... Rs>
constexpr auto fn_common_signed_tuple (std::tuple< Ls... > L, std::tuple< Rs... > R)
 
template<typename L , typename R >
constexpr auto fn_common_unsigned_tuple (L const &, R const &)
 
template<typename... Ls, typename... Rs>
constexpr auto fn_common_unsigned_tuple (std::tuple< Ls... > L, std::tuple< Rs... > R)
 
template<cgt::tuple_flat_c TupleType>
constexpr auto fn_common_signed_tuples (TupleType Tuple)
 
template<cgt::tuple_flat_c TupleA, cgt::tuple_flat_c TupleB, cgt::tuple_flat_c... TupleTypes>
constexpr auto fn_common_signed_tuples (TupleA A, TupleB B, TupleTypes... Tuples)
 
template<cgt::tuple_flat_c TupleType>
constexpr auto fn_common_unsigned_tuples (TupleType Tuple)
 
template<cgt::tuple_flat_c TupleA, cgt::tuple_flat_c TupleB, cgt::tuple_flat_c... TupleTypes>
constexpr auto fn_common_unsigned_tuples (TupleA A, TupleB B, TupleTypes... Tuples)
 
template<typename... Ls, typename... Rs>
constexpr decltype(auto) tuple_cartesian_product (std::tuple< Ls... > const &A, std::tuple< Rs... > const &B)
 
template<typename... Ls, typename R , std::size_t N2>
constexpr decltype(auto) tuple_cartesian_product (std::tuple< Ls... > const &A, std::array< R, N2 > const &B)
 
template<typename L , std::size_t N1, typename... Rs>
constexpr decltype(auto) tuple_cartesian_product (std::array< L, N1 > const &A, std::tuple< Rs... > const &B)
 
template<typename L , std::size_t N1, typename R , std::size_t N2>
constexpr decltype(auto) tuple_cartesian_product (std::array< L, N1 > const &A, std::array< R, N2 > const &B)
 
template<std::size_t SIZE, typename CharType >
void print_sequence (std::basic_ostream< CharType > &os, auto Index, auto count)
 
template<size_t Index, typename CharType , typename... Types>
void print_tuple (std::basic_ostream< CharType > &os, const std::tuple< Types... > &container)
 
template<bool bSigned, cgt::numerical_c Left, cgt::numerical_c Right>
constexpr auto tuple_common_elements (Left, Right) noexcept
 
template<bool bSigned = true, typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto tuple_common_elements (std::tuple< Elements... >, Scalar) noexcept
 
template<bool bSigned = true, typename T , std::size_t N, cgt::numerical_c Scalar>
constexpr auto tuple_common_elements (std::array< T, N >, Scalar) noexcept
 
template<bool bSigned = true, typename T , std::size_t N, cgt::numerical_c Scalar>
constexpr auto tuple_common_elements (Scalar, std::array< T, N >) noexcept
 
template<bool bSigned = true, typename T , cgt::numerical_c Scalar>
constexpr auto tuple_common_elements (std::vector< T >, Scalar) noexcept
 
template<bool bSigned = true, typename T , cgt::numerical_c Scalar>
constexpr auto tuple_common_elements (Scalar, std::vector< T >) noexcept
 
template<bool bSigned = true, typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto tuple_common_elements (std::tuple< Lefts... >, std::tuple< Rights... >) noexcept
 
template<typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto operator| (std::tuple< Lefts... >, std::tuple< Rights... >) noexcept
 
template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto operator| (std::tuple< Elements... >, Scalar) noexcept
 
template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto operator| (Scalar, std::tuple< Elements... >) noexcept
 
template<typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto operator|| (std::tuple< Lefts... >, std::tuple< Rights... >) noexcept
 
template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto operator|| (std::tuple< Elements... >, Scalar) noexcept
 

Typedef Documentation

◆ common_signed_tuple_pair

template<typename TupleA , typename TupleB >
using stl_extensions::hidden::common_signed_tuple_pair = typedef decltype(fn_common_signed_tuple(TupleA{}, TupleB{}))

Definition at line 480 of file cpg_std_extensions.hpp.

◆ common_signed_tuple_t

template<cgt::tuple_flat_c TupleType, cgt::tuple_flat_c... TupleTypes>
using stl_extensions::hidden::common_signed_tuple_t = typedef decltype(hidden::fn_common_signed_tuples(TupleType{}, TupleTypes{}...))

Definition at line 534 of file cpg_std_extensions.hpp.

◆ common_unsigned_tuple_pair

template<cgt::tuple_flat_c TupleA, cgt::tuple_flat_c TupleB>
using stl_extensions::hidden::common_unsigned_tuple_pair = typedef decltype(fn_common_unsigned_tuple(TupleA{}, TupleB{}))

Definition at line 500 of file cpg_std_extensions.hpp.

◆ common_unsigned_tuple_t

template<cgt::tuple_flat_c TupleType, cgt::tuple_flat_c... TupleTypes>
using stl_extensions::hidden::common_unsigned_tuple_t = typedef decltype(hidden::fn_common_unsigned_tuples(TupleType{}, TupleTypes{}...))

Definition at line 538 of file cpg_std_extensions.hpp.

◆ tuple_cross_product_t

template<typename TupleA , typename... TupleTypes>
using stl_extensions::hidden::tuple_cross_product_t = typedef decltype((TupleA{} > > ... > > TupleTypes{}))

Definition at line 449 of file cpg_std_extensions.hpp.

Function Documentation

◆ fn_common_container_type()

template<typename S , typename T >
requires requires { s + t; }
auto stl_extensions::hidden::fn_common_container_type ( s,
t 
)

Definition at line 156 of file cpg_array_tuple_vector_operations.hpp.

◆ fn_common_signed_tuple() [1/2]

template<typename L , typename R >
constexpr auto stl_extensions::hidden::fn_common_signed_tuple ( L const &  ,
R const &   
)
constexpr

Definition at line 463 of file cpg_std_extensions.hpp.

◆ fn_common_signed_tuple() [2/2]

template<typename... Ls, typename... Rs>
constexpr auto stl_extensions::hidden::fn_common_signed_tuple ( std::tuple< Ls... >  L,
std::tuple< Rs... >  R 
)
constexpr

Definition at line 469 of file cpg_std_extensions.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fn_common_signed_tuples() [1/2]

template<cgt::tuple_flat_c TupleA, cgt::tuple_flat_c TupleB, cgt::tuple_flat_c... TupleTypes>
constexpr auto stl_extensions::hidden::fn_common_signed_tuples ( TupleA  A,
TupleB  B,
TupleTypes...  Tuples 
)
constexpr

Definition at line 509 of file cpg_std_extensions.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fn_common_signed_tuples() [2/2]

template<cgt::tuple_flat_c TupleType>
constexpr auto stl_extensions::hidden::fn_common_signed_tuples ( TupleType  Tuple)
constexpr

Definition at line 503 of file cpg_std_extensions.hpp.

◆ fn_common_unsigned_tuple() [1/2]

template<typename L , typename R >
constexpr auto stl_extensions::hidden::fn_common_unsigned_tuple ( L const &  ,
R const &   
)
constexpr

Definition at line 483 of file cpg_std_extensions.hpp.

◆ fn_common_unsigned_tuple() [2/2]

template<typename... Ls, typename... Rs>
constexpr auto stl_extensions::hidden::fn_common_unsigned_tuple ( std::tuple< Ls... >  L,
std::tuple< Rs... >  R 
)
constexpr

Definition at line 489 of file cpg_std_extensions.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fn_common_unsigned_tuples() [1/2]

template<cgt::tuple_flat_c TupleA, cgt::tuple_flat_c TupleB, cgt::tuple_flat_c... TupleTypes>
constexpr auto stl_extensions::hidden::fn_common_unsigned_tuples ( TupleA  A,
TupleB  B,
TupleTypes...  Tuples 
)
constexpr

Definition at line 524 of file cpg_std_extensions.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fn_common_unsigned_tuples() [2/2]

template<cgt::tuple_flat_c TupleType>
constexpr auto stl_extensions::hidden::fn_common_unsigned_tuples ( TupleType  Tuple)
constexpr

Definition at line 518 of file cpg_std_extensions.hpp.

◆ fn_tuple_cross_product()

template<typename... TT, typename T , typename... Ts, typename... Ss>
constexpr auto stl_extensions::hidden::fn_tuple_cross_product ( std::tuple< TT... >  tt,
std::tuple< T, Ts... >  t,
std::tuple< Ss... >  s 
)
constexpr

Definition at line 423 of file cpg_std_extensions.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator|() [1/3]

template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::operator| ( Scalar  ,
std::tuple< Elements... >   
)
constexprnoexcept

Definition at line 85 of file cpg_tuple_operations.hpp.

◆ operator|() [2/3]

template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::operator| ( std::tuple< Elements... >  ,
Scalar   
)
constexprnoexcept

Definition at line 78 of file cpg_tuple_operations.hpp.

◆ operator|() [3/3]

template<typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto stl_extensions::hidden::operator| ( std::tuple< Lefts... >  ,
std::tuple< Rights... >   
)
constexprnoexcept

Definition at line 72 of file cpg_tuple_operations.hpp.

◆ operator||() [1/2]

template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::operator|| ( std::tuple< Elements... >  ,
Scalar   
)
constexprnoexcept

Definition at line 100 of file cpg_tuple_operations.hpp.

◆ operator||() [2/2]

template<typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto stl_extensions::hidden::operator|| ( std::tuple< Lefts... >  ,
std::tuple< Rights... >   
)
constexprnoexcept

Definition at line 94 of file cpg_tuple_operations.hpp.

◆ print_sequence()

template<std::size_t SIZE, typename CharType >
void stl_extensions::hidden::print_sequence ( std::basic_ostream< CharType > &  os,
auto  Index,
auto  count 
)

Definition at line 735 of file cpg_std_extensions.hpp.

◆ print_tuple()

template<size_t Index, typename CharType , typename... Types>
void stl_extensions::hidden::print_tuple ( std::basic_ostream< CharType > &  os,
const std::tuple< Types... > &  container 
)

Definition at line 1006 of file cpg_std_extensions.hpp.

◆ tuple_cartesian_product() [1/4]

template<typename L , std::size_t N1, typename R , std::size_t N2>
constexpr decltype(auto) stl_extensions::hidden::tuple_cartesian_product ( std::array< L, N1 > const &  A,
std::array< R, N2 > const &  B 
)
constexpr

Definition at line 659 of file cpg_std_extensions.hpp.

Here is the call graph for this function:

◆ tuple_cartesian_product() [2/4]

template<typename L , std::size_t N1, typename... Rs>
constexpr decltype(auto) stl_extensions::hidden::tuple_cartesian_product ( std::array< L, N1 > const &  A,
std::tuple< Rs... > const &  B 
)
constexpr

Definition at line 641 of file cpg_std_extensions.hpp.

Here is the call graph for this function:

◆ tuple_cartesian_product() [3/4]

template<typename... Ls, typename R , std::size_t N2>
constexpr decltype(auto) stl_extensions::hidden::tuple_cartesian_product ( std::tuple< Ls... > const &  A,
std::array< R, N2 > const &  B 
)
constexpr

Definition at line 623 of file cpg_std_extensions.hpp.

Here is the call graph for this function:

◆ tuple_cartesian_product() [4/4]

template<typename... Ls, typename... Rs>
constexpr decltype(auto) stl_extensions::hidden::tuple_cartesian_product ( std::tuple< Ls... > const &  A,
std::tuple< Rs... > const &  B 
)
constexpr

Definition at line 605 of file cpg_std_extensions.hpp.

Here is the call graph for this function:

◆ tuple_common_elements() [1/7]

template<bool bSigned, cgt::numerical_c Left, cgt::numerical_c Right>
constexpr auto stl_extensions::hidden::tuple_common_elements ( Left  ,
Right   
)
constexprnoexcept

Definition at line 24 of file cpg_tuple_operations.hpp.

◆ tuple_common_elements() [2/7]

template<bool bSigned = true, typename T , std::size_t N, cgt::numerical_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements ( Scalar  ,
std::array< T, N >   
)
constexprnoexcept

Definition at line 45 of file cpg_tuple_operations.hpp.

◆ tuple_common_elements() [3/7]

template<bool bSigned = true, typename T , cgt::numerical_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements ( Scalar  ,
std::vector< T >   
)
constexprnoexcept

Definition at line 57 of file cpg_tuple_operations.hpp.

◆ tuple_common_elements() [4/7]

template<bool bSigned = true, typename T , std::size_t N, cgt::numerical_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements ( std::array< T, N >  ,
Scalar   
)
constexprnoexcept

Definition at line 39 of file cpg_tuple_operations.hpp.

◆ tuple_common_elements() [5/7]

template<bool bSigned = true, typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements ( std::tuple< Elements... >  ,
Scalar   
)
constexprnoexcept

Definition at line 33 of file cpg_tuple_operations.hpp.

◆ tuple_common_elements() [6/7]

template<bool bSigned = true, typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto stl_extensions::hidden::tuple_common_elements ( std::tuple< Lefts... >  ,
std::tuple< Rights... >   
)
constexprnoexcept

Definition at line 64 of file cpg_tuple_operations.hpp.

◆ tuple_common_elements() [7/7]

template<bool bSigned = true, typename T , cgt::numerical_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements ( std::vector< T >  ,
Scalar   
)
constexprnoexcept

Definition at line 51 of file cpg_tuple_operations.hpp.

◆ tuple_connect_tail()

template<typename... Ts, typename... Ss>
constexpr auto stl_extensions::hidden::tuple_connect_tail ( std::tuple< Ts... >  ,
std::tuple< Ss... >   
)
constexpr

Definition at line 405 of file cpg_std_extensions.hpp.

Here is the caller graph for this function:

◆ tuple_pairs() [1/2]

template<typename... Ts, typename... Ss>
constexpr auto stl_extensions::hidden::tuple_pairs ( std::tuple< Ts... >  ,
std::tuple< Ss... >   
)
constexpr

Definition at line 417 of file cpg_std_extensions.hpp.

Here is the caller graph for this function:

◆ tuple_pairs() [2/2]

template<typename T , typename... Ss>
constexpr auto stl_extensions::hidden::tuple_pairs ( ,
std::tuple< Ss... >   
)
constexpr

Definition at line 411 of file cpg_std_extensions.hpp.