diff --git a/expression.hpp b/expression.hpp index 48a9814..d082a89 100644 --- a/expression.hpp +++ b/expression.hpp @@ -289,6 +289,20 @@ namespace boost::proto17 { }; } + template + struct expression_function + { + template + decltype(auto) operator() (U &&... u) + { return evaluate(expr, static_cast(u)...); } + + expression expr; + }; + + template + auto make_expression_function (expression && expr) + { return expression_function{std::move(expr)}; } + } #include "detail/default_eval.hpp"