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

Go to the source code of this file.

Namespaces

namespace  stl_extensions
 

Macros

#define NOMINMAX
 

Functions

template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && (cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) || (cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator+ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && (cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) || (cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator- (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && (cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) || (cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator* (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && (cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) || (cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>) && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator/ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && ( (std::tuple_size_v<std::remove_cvref_t<LeftType>> == 3) || (std::tuple_size_v<std::remove_cvref_t<LeftType>> == 4)) && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator% (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator% (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator% (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator% (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator& (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires (std::tuple_size_v<std::remove_cvref_t<LeftType>> == std::tuple_size_v<std::remove_cvref_t<RightType>>) && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator& (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>
constexpr decltype(auto) stl_extensions::operator& (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>>
constexpr decltype(auto) stl_extensions::operator& (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator+ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator+ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator- (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator- (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator* (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator* (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator/ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c LeftType, cgt::std_array_flat_c RightType>
requires cgt::numerical_c<std::tuple_element_t<0, std::remove_cvref_t<LeftType>>> && cgt::std_array_c<std::tuple_element_t<0, std::remove_cvref_t<RightType>>> && cgt::common_std_array_c<LeftType, RightType>
constexpr decltype(auto) stl_extensions::operator/ (LeftType &&A, RightType &&B) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c ArrayType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator+ (ArrayType &&A, ScalarType s) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::numerical_c ScalarType, cgt::std_array_flat_c ArrayType>
constexpr decltype(auto) stl_extensions::operator+ (ScalarType s, ArrayType &&A) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c ArrayType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator- (ArrayType &&A, ScalarType s) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::numerical_c ScalarType, cgt::std_array_flat_c ArrayType>
constexpr decltype(auto) stl_extensions::operator- (ScalarType s, ArrayType &&A) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c ArrayType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator* (ArrayType &&A, ScalarType s) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::numerical_c ScalarType, cgt::std_array_flat_c ArrayType>
constexpr decltype(auto) stl_extensions::operator* (ScalarType s, ArrayType &&A) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::std_array_flat_c ArrayType, cgt::numerical_c ScalarType>
constexpr decltype(auto) stl_extensions::operator/ (ArrayType &&A, ScalarType s) noexcept(!cpg::bDetectOverFlow)
 
template<cgt::numerical_c ScalarType, cgt::std_array_flat_c ArrayType>
constexpr decltype(auto) stl_extensions::operator/ (ScalarType s, ArrayType &&A) noexcept(!cpg::bDetectOverFlow)
 

Macro Definition Documentation

◆ NOMINMAX

#define NOMINMAX

Definition at line 12 of file cpg_std_array_operations.hpp.