C++ Library Extensions 2022.12.09
To help learn modern C++ programming
cpg::parallel Namespace Reference

Namespaces

namespace  hidden
 

Functions

template<typename IndexType = long long>
constexpr decltype(auto) counting_iterator (IndexType idx=IndexType{})
 
template<template< typename, typename... > class ContainerType, typename ExecutionPolicy , typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires requires { { operation(head, tails...) } noexcept ; }
constexpr decltype(auto) go_std_parallel (ExecutionPolicy &&execution_policy, OperationType &&operation, RangeType head, RangeTypes... tails) noexcept
 
template<typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires requires { { operation(head, tails... ) } noexcept; }
constexpr decltype(auto) go_std_parallel (OperationType &&operation, RangeType head, RangeTypes... tails) noexcept
 
template<template< typename, typename... > class ContainerType, typename ExecutionPolicy , typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires cgt::valid_type_c<decltype(hidden::resultant_element_type(operation, head, tails...))>
decltype(auto) go_std_parallel_exception_safe (ExecutionPolicy &&execution_policy, OperationType &&operation, RangeType head, RangeTypes... tails)
 
template<template< typename, typename... > class ContainerType, typename ExecutionPolicy , typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires requires { requires cgt::no_type_c<decltype(hidden::resultant_element_type(operation, head, tails...))>; }
decltype(auto) go_std_parallel_exception_safe (ExecutionPolicy &&execution_policy, OperationType &&operation, RangeType head, RangeTypes... tails)
 
template<typename OperationType , std::integral RangeType, std::integral... RangeTypes>
decltype(auto) go_std_parallel_exception_safe (OperationType &&operation, RangeType head, RangeTypes... tails)
 
template<template< typename, auto > class ContainerType = std::array, typename ExecutionPolicy = cgt::no_type, typename OperationType = cgt::no_type, auto head = 1, auto... tails>
constexpr decltype(auto) go_std_parallel (ExecutionPolicy &&execution_policy, OperationType &&operation, cgt::sequence< head, tails... >)
 
template<typename ExecutionPolicy , typename OperationType , cgt::vector_c ContainerType, cgt::std_array_flat_c... ArrayTypes>
requires (cgt::element_counts_are_the_same(cgt::first_type_t<ContainerType>{}, std::remove_cvref_t<ArrayTypes>{}...))
constexpr decltype(auto) go_std_parallel (ExecutionPolicy &&execution_policy, OperationType &&operation, ContainerType &&container, ArrayTypes &&...arrays)
 
template<typename ExecutionPolicy , typename OperationType , cgt::vector_c... ContainerTypes>
requires ( sizeof...(ContainerTypes) > 1)
constexpr decltype(auto) go_std_parallel (ExecutionPolicy &&execution_policy, OperationType &&operation, ContainerTypes &&... containers)
 
template<typename ExecutionPolicy , typename OperationType , cgt::std_array_flat_c... ContainerTypes>
requires (sizeof...(ContainerTypes) > 0) (cgt::element_counts_are_the_same(std::remove_cvref_t<ContainerTypes>{}...))
constexpr decltype(auto) go_std_parallel (ExecutionPolicy &&execution_policy, OperationType &&operation, ContainerTypes &&... containers)
 

Function Documentation

◆ counting_iterator()

template<typename IndexType = long long>
constexpr decltype(auto) cpg::parallel::counting_iterator ( IndexType  idx = IndexType{})
constexpr

Definition at line 81 of file cpg_iterator.hpp.

Here is the caller graph for this function:

◆ go_std_parallel() [1/6]

template<template< typename, auto > class ContainerType = std::array, typename ExecutionPolicy = cgt::no_type, typename OperationType = cgt::no_type, auto head = 1, auto... tails>
constexpr decltype(auto) cpg::parallel::go_std_parallel ( ExecutionPolicy &&  execution_policy,
OperationType &&  operation,
cgt::sequence< head, tails... >   
)
constexpr

Definition at line 418 of file cpg_parallel.hpp.

Here is the call graph for this function:

◆ go_std_parallel() [2/6]

template<typename ExecutionPolicy , typename OperationType , cgt::vector_c ContainerType, cgt::std_array_flat_c... ArrayTypes>
requires (cgt::element_counts_are_the_same(cgt::first_type_t<ContainerType>{}, std::remove_cvref_t<ArrayTypes>{}...))
constexpr decltype(auto) cpg::parallel::go_std_parallel ( ExecutionPolicy &&  execution_policy,
OperationType &&  operation,
ContainerType &&  container,
ArrayTypes &&...  arrays 
)
constexpr

Definition at line 482 of file cpg_parallel.hpp.

◆ go_std_parallel() [3/6]

template<typename ExecutionPolicy , typename OperationType , cgt::vector_c... ContainerTypes>
requires ( sizeof...(ContainerTypes) > 1)
constexpr decltype(auto) cpg::parallel::go_std_parallel ( ExecutionPolicy &&  execution_policy,
OperationType &&  operation,
ContainerTypes &&...  containers 
)
constexpr

Definition at line 537 of file cpg_parallel.hpp.

Here is the call graph for this function:

◆ go_std_parallel() [4/6]

template<typename ExecutionPolicy , typename OperationType , cgt::std_array_flat_c... ContainerTypes>
requires (sizeof...(ContainerTypes) > 0) (cgt::element_counts_are_the_same(std::remove_cvref_t<ContainerTypes>{}...))
constexpr decltype(auto) cpg::parallel::go_std_parallel ( ExecutionPolicy &&  execution_policy,
OperationType &&  operation,
ContainerTypes &&...  containers 
)
constexpr

Definition at line 581 of file cpg_parallel.hpp.

◆ go_std_parallel() [5/6]

template<template< typename, typename... > class ContainerType, typename ExecutionPolicy , typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires requires { { operation(head, tails...) } noexcept ; }
constexpr decltype(auto) cpg::parallel::go_std_parallel ( ExecutionPolicy &&  execution_policy,
OperationType &&  operation,
RangeType  head,
RangeTypes...  tails 
)
constexprnoexcept

Definition at line 128 of file cpg_parallel.hpp.

◆ go_std_parallel() [6/6]

template<typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires requires { { operation(head, tails... ) } noexcept; }
constexpr decltype(auto) cpg::parallel::go_std_parallel ( OperationType &&  operation,
RangeType  head,
RangeTypes...  tails 
)
constexprnoexcept

Definition at line 212 of file cpg_parallel.hpp.

◆ go_std_parallel_exception_safe() [1/3]

template<template< typename, typename... > class ContainerType, typename ExecutionPolicy , typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires cgt::valid_type_c<decltype(hidden::resultant_element_type(operation, head, tails...))>
decltype(auto) cpg::parallel::go_std_parallel_exception_safe ( ExecutionPolicy &&  execution_policy,
OperationType &&  operation,
RangeType  head,
RangeTypes...  tails 
)

Definition at line 225 of file cpg_parallel.hpp.

Here is the call graph for this function:

◆ go_std_parallel_exception_safe() [2/3]

template<template< typename, typename... > class ContainerType, typename ExecutionPolicy , typename OperationType , std::integral RangeType, std::integral... RangeTypes>
requires requires { requires cgt::no_type_c<decltype(hidden::resultant_element_type(operation, head, tails...))>; }
decltype(auto) cpg::parallel::go_std_parallel_exception_safe ( ExecutionPolicy &&  execution_policy,
OperationType &&  operation,
RangeType  head,
RangeTypes...  tails 
)

Definition at line 320 of file cpg_parallel.hpp.

Here is the call graph for this function:

◆ go_std_parallel_exception_safe() [3/3]

template<typename OperationType , std::integral RangeType, std::integral... RangeTypes>
decltype(auto) cpg::parallel::go_std_parallel_exception_safe ( OperationType &&  operation,
RangeType  head,
RangeTypes...  tails 
)

Definition at line 407 of file cpg_parallel.hpp.