3#ifndef pRC_CORE_VALUE_FUNCTIONS_FOLD_H
4#define pRC_CORE_VALUE_FUNCTIONS_FOLD_H
11 template<
class F, Bool E = false, Direction D = Direction::Forwards>
19 decltype(
eval(declval<XA>())),
XA>
24 return eval(forward<XA>(a));
36 static inline constexpr auto fold(
XA &&a,
XB &&b)
40 return eval(F()(forward<XA>(a), forward<XB>(b)));
49 class XA,
class XB,
class...
Xs,
60 auto const c = [&a, &b]()
64 return eval(F()(forward<XA>(a), forward<XB>(b)));
76 auto const c = [&b, &
args...]()
83 return eval(F()(forward<XA>(a), c()));
pRC::Size const D
Definition CalculatePThetaTests.cpp:9
Definition cholesky.hpp:18
static constexpr X eval(X &&a)
Definition eval.hpp:11
bool Bool
Definition type_traits.hpp:18
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
std::invoke_result_t< F, Args... > ResultOf
Definition type_traits.hpp:140
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
Constant< Bool, B > IsSatisfied
Definition type_traits.hpp:71
static constexpr Conditional< IsSatisfied< E >, decltype(eval(declval< XA >())), XA > fold(XA &&a)
Definition fold.hpp:20
Direction
Definition direction.hpp:9
std::is_invocable< F, Args... > IsInvocable
Definition type_traits.hpp:134