3#ifndef pRC_CORE_TENSOR_FUNCTIONS_NARROW_H
4#define pRC_CORE_TENSOR_FUNCTIONS_NARROW_H
10 template<
Index... Ns,
class F,
class... Xs>
11 requires(IsTensorish<RemoveReference<Xs>> && ...) &&
12 (
sizeof...(Xs) > 0) &&
17 static inline constexpr auto narrow(F &&f, Xs &&...args)
22 [&f, &args...](
auto const... seq)
24 return exclude<seq...>(forward<F>(f), forward<Xs>(args)...);
28 template<
class F,
Index... Ns,
class... Xs>
29 requires(IsTensorish<RemoveReference<Xs>> && ...) &&
30 requires {
narrow<Ns...>(declval<F>(), declval<Xs>()...); }
31 static inline constexpr auto exclude(Xs &&...args)
33 return narrow<Ns...>(F(), forward<Xs>(args)...);
Definition cholesky.hpp:10
Size Index
Definition basics.hpp:32
std::tuple< Ts... > Tuple
Definition basics.hpp:23
std::remove_reference_t< T > RemoveReference
Definition basics.hpp:41
std::tuple_element_t< I, T > TupleElement
Definition basics.hpp:26
std::common_type_t< Ts... > Common
Definition basics.hpp:53
Sequence< Size, Ns... > Sizes
Definition sequence.hpp:100
static constexpr auto makeSeries()
Definition sequence.hpp:390
static constexpr auto chip(Sequence< T, Is... > const)
Definition sequence.hpp:584
static constexpr auto exclude(F &&f, Xs &&...args)
Definition exclude.hpp:20
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:383
static constexpr auto narrow(F &&f, Xs &&...args)
Definition narrow.hpp:17