51 template <
typename T,
int... Is>
67 template <
typename... Args>
68 FORCEINLINE
decltype(
auto)
operator()(Args &&...args)
const {
99 template <
typename T,
typename... Phs>
114 template <
typename T,
int... Is,
typename... Pairs>
120 static constexpr bool is_lazy = (detail::ph_set<
make_fun_impl<T, Is...>>::value != detail::ph_set<Pairs...>::value);
133 FORCEINLINE
decltype(
auto)
operator()(
make_fun_impl<T, Is...>
const &f, Pairs &...pairs)
const {
141 template <
typename Expr,
int... Is>
142 inline constexpr bool is_function_impl<make_fun_impl<Expr, Is...>> =
true;
145 template <
typename Expr,
int... Is>
146 struct ph_set<make_fun_impl<Expr, Is...>> {
147 static constexpr ull_t value = ph_filter<ph_set<Expr>::value, Is...>::value;
151 template <
typename Expr,
int... Is>
152 constexpr bool is_lazy_impl<make_fun_impl<Expr, Is...>> = (ph_set<make_fun_impl<Expr, Is...>>::value != 0);
155 template <
typename Expr,
int... Is>
156 constexpr bool force_copy_in_expr_impl<make_fun_impl<Expr, Is...>> =
true;
Provides functionality to evaluate lazy expressions from the clef library.
__inline__ decltype(auto) eval(T const &obj, Pairs &&...pairs)
Generic function to evaluate expressions and other types.
__inline__ auto make_function(T &&obj, Phs...)
Factory function for nda::clef::make_fun_impl objects.
Macros used in the nda library.
Provides placeholders for the clef library.
Generic evaluator for types which do not have a specialized evaluator.
static constexpr bool is_lazy
Constexpr variable that is true if the type T is lazy.
Helper struct to simplify calls to nda::clef::eval.
T obj
Object to be evaluated.
A pair consisting of a placeholder and its assigned value.
A placeholder is an empty struct, labelled by an int.
Provides some utility functions and type traits for the CLEF library.