#include #include using namespace triqs::clef; triqs::clef::placeholder <1> x_; triqs::clef::placeholder <2> y_; triqs::clef::placeholder <3> z_; namespace tql= triqs::clef; struct F1{ double v; F1(double v_): v(v_){} F1(F1 const &) = delete; // non copyable double operator() (double x) const { return 10*x;} template< typename... Args> typename triqs::clef::result_of::make_expr_call,Args...>::type operator()( Args&&... args ) const { return make_expr_call (std::ref(*this),args...);} template< typename... Args> typename triqs::clef::result_of::make_expr_call,Args...>::type operator()( Args&&... args ) { return make_expr_call (std::ref(*this),args...);} template friend void triqs_clef_auto_assign (F1 & x, Fnt f) { x.v++; std::cerr<< " called triqs_clef_auto_assign "<< f(100)< "<< (X) < void test1( Expr expr) { TEST(expr); TEST(eval( expr, x_=5)); TEST(eval( expr, y_=5, x_=9)); TEST(eval( expr, x_=5, y_=9)); std::cout<<"-------------"< void test2( Expr const & expr) { // std::cout << " type is " << triqs::utility::typeid_name(expr) << std::endl; std::cout<< " ------ start test2 -----------------"<::value <