C++ Library Extensions 2022.12.09
To help learn modern C++ programming
cpg_tuple_operations.hpp File Reference
#include "cpg_types.hpp"
Include dependency graph for cpg_tuple_operations.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  stl_extensions::hidden::st_tuple_scalar_signed_cast< T, S >
 
struct  stl_extensions::hidden::st_tuple_scalar_signed_cast< std::tuple< Types... >, ScalarType >
 
struct  stl_extensions::hidden::st_tuple_scalar_unsigned_cast< T, S >
 
struct  stl_extensions::hidden::st_tuple_scalar_unsigned_cast< std::tuple< Types... >, ScalarType >
 

Namespaces

namespace  stl_extensions
 
namespace  stl_extensions::hidden
 

Macros

#define NOMINMAX
 

Typedefs

template<typename T , typename S >
using stl_extensions::tuple_scalar_signed_cast = typename hidden::st_tuple_scalar_signed_cast< T, S >::type
 
template<typename T , typename S >
using stl_extensions::tuple_scalar_unsigned_cast = typename hidden::st_tuple_scalar_unsigned_cast< T, S >::type
 

Functions

template<bool bSigned, cgt::numerical_c Left, cgt::numerical_c Right>
constexpr auto stl_extensions::hidden::tuple_common_elements (Left, Right) noexcept
 
template<bool bSigned = true, typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements (std::tuple< Elements... >, Scalar) noexcept
 
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) noexcept
 
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 >) noexcept
 
template<bool bSigned = true, typename T , cgt::numerical_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements (std::vector< T >, Scalar) noexcept
 
template<bool bSigned = true, typename T , cgt::numerical_c Scalar>
constexpr auto stl_extensions::hidden::tuple_common_elements (Scalar, std::vector< T >) noexcept
 
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... >) noexcept
 
template<typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto stl_extensions::hidden::operator| (std::tuple< Lefts... >, std::tuple< Rights... >) noexcept
 
template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::operator| (std::tuple< Elements... >, Scalar) noexcept
 
template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::operator| (Scalar, std::tuple< Elements... >) noexcept
 
template<typename... Lefts, typename... Rights>
requires ( sizeof...(Lefts) == sizeof...(Rights) )
constexpr auto stl_extensions::hidden::operator|| (std::tuple< Lefts... >, std::tuple< Rights... >) noexcept
 
template<typename... Elements, cgt::non_tuple_c Scalar>
constexpr auto stl_extensions::hidden::operator|| (std::tuple< Elements... >, Scalar) noexcept
 
template<typename T , typename... Tails>
constexpr auto stl_extensions::signed_tuple_operation (T arg, Tails... args) noexcept
 
template<typename T , typename... Tails>
constexpr auto stl_extensions::unsigned_tuple_operation (T arg, Tails... args) noexcept
 
template<cgt::tuple_flat_c LeftType, cgt::tuple_flat_c RightType>
requires ( std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>)
constexpr decltype(auto) stl_extensions::operator+ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c LeftType, cgt::tuple_flat_c RightType>
requires ( std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>)
constexpr decltype(auto) stl_extensions::operator- (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c LeftType, cgt::tuple_flat_c RightType>
requires ( std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>)
constexpr decltype(auto) stl_extensions::operator* (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c LeftType, cgt::tuple_flat_c RightType>
requires ( std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>)
constexpr decltype(auto) stl_extensions::operator/ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator+ (TupleType &&A, ScalarType scalar) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator+ (ScalarType scalar, TupleType &&A) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator- (TupleType &&A, ScalarType scalar) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator- (ScalarType scalar, TupleType &&A) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator* (TupleType &&A, ScalarType scalar) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator* (ScalarType scalar, TupleType &&A) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator/ (TupleType &&A, ScalarType scalar) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::tuple_flat_c TupleType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator/ (ScalarType scalar, TupleType &&A) noexcept(!cpg::bDetectOverFlow)
 

Macro Definition Documentation

◆ NOMINMAX

#define NOMINMAX

Definition at line 12 of file cpg_tuple_operations.hpp.