51 template <
typename T,
typename RHS>
66 template <
typename T,
typename RHS>
82 template <
typename Tag,
typename... Childs,
typename RHS>
88 template <
typename Tag,
typename... Childs,
typename RHS>
105 template <
typename F,
typename RHS,
int... Is>
107 static_assert(detail::all_different(Is...),
"Error in clef operator<<: Two of the placeholders on the LHS are the same");
112 template <
typename F,
typename RHS,
int... Is>
113 FORCEINLINE
void operator<<(
expr<tags::function, F, placeholder<Is>...> &&ex, RHS &&rhs) {
114 static_assert(detail::all_different(Is...),
"Error in clef operator<<: Two of the placeholders on the LHS are the same");
119 template <
typename F,
typename RHS,
int... Is>
120 FORCEINLINE
void operator<<(expr<tags::function, F, placeholder<Is>...> &ex, RHS &&rhs) {
121 static_assert(detail::all_different(Is...),
"Error in clef operator<<: Two of the placeholders on the LHS are the same");
126 template <
typename F,
typename RHS,
typename... T>
127 void operator<<(expr<tags::function, F, T...> &&ex, RHS &&rhs) =
delete;
128 template <
typename F,
typename RHS,
typename... T>
129 void operator<<(expr<tags::function, F, T...> &ex, RHS &&rhs) =
delete;
130 template <
typename F,
typename RHS,
typename... T>
131 void operator<<(expr<tags::function, F, T...>
const &ex, RHS &&rhs) =
delete;
Provides a basic lazy expression type for the clef library.
Provides functionality to turn lazy expressions into callable objects and to generally simplify the e...
__inline__ void clef_auto_assign(std::reference_wrapper< T > wrapper, RHS &&rhs)
Overload of clef_auto_assign function for std::reference_wrapper objects.
__inline__ void operator<<(expr< tags::function, F, placeholder< Is >... > const &ex, RHS &&rhs)
Assign values to the underlying object of a lazy function call expression.
__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.
Single node of the expression tree.
childs_t childs
Child nodes of the current expression node.
A placeholder is an empty struct, labelled by an int.
Lazy binary expression for nda::ArrayOrScalar types.
Provides some utility functions and type traits for the CLEF library.