23 #ifndef FUNCTIONAL_H_INCLUDED 24 #define FUNCTIONAL_H_INCLUDED 33 template<
class ... Args>
40 std::tuple<Args...> args;
48 args = std::tuple<Args...>(t_args...);
53 template<
class ... T_Args>
54 Expr operator()(T_Args ... t_args)
56 std::tuple<T_Args...> new_args(t_args...);
57 static_assert(
sizeof...(Args) >=
sizeof...(T_Args));
61 rep.template replace<0, T_Args...>(
69 template<
class ...T_Args>
71 std::ostream& operator<<(
75 template<
class ...Arg1>
78 template<
size_t i,
class ...Arg2>
81 std::tuple<Arg1...> & oldArg,
82 std::tuple<Arg2...> & newArg)
84 if constexpr (i ==
sizeof...(Arg2))
90 return replace<i + 1, Arg2...>(
Namespace for csl library.
Definition: abreviation.h:34
Expr DeepCopy(const Abstract *expr)
See DeepCopy(const Expr& expr).
Definition: utils.cpp:113
Definition: functional.h:34
Definition: functional.h:76
Base classes for all exprs in the program.
Expression type/.
Definition: abstract.h:1573