64 template <
typename Tag,
typename... Ts>
93 template <
typename... Us>
94 expr(Tag, Us &&...us) :
childs(std::forward<Us>(us)...) {}
104 template <
typename... Args>
117 template <
typename... Args>
126 template <
typename Tag,
typename... Ts>
127 struct ph_set<
expr<Tag, Ts...>> : ph_set<Ts...> {};
130 template <
typename Tag,
typename... Ts>
131 constexpr bool is_lazy_impl<expr<Tag, Ts...>> =
true;
134 template <
typename Tag,
typename... Ts>
135 constexpr bool force_copy_in_expr_impl<expr<Tag, Ts...>> =
true;
Provides some utility functions and type traits for the CLEF library.
expr & operator=(expr const &)=delete
Copy assignment operator is deleted.
expr(expr &&ex) noexcept
Move constructor simply moves the child nodes from the source expression.
std::tuple< Ts... > childs_t
Tuple type for storing the child nodes.
auto operator[](Args &&...args) const
Subscript operator.
expr & operator=(expr &&)=default
Default move assignment operator.
expr(expr const &)=default
Default copy constructor.
expr(Tag, Us &&...us)
Construct an expression node with a given tag and child nodes.
childs_t childs
Child nodes of the current expression node.
auto operator()(Args &&...args) const
Function call operator.
Lazy binary expression for nda::ArrayOrScalar types.