mirror of
https://github.com/triqs/dft_tools
synced 2024-12-25 13:53:40 +01:00
correction after compiling on linux gcc 4.8.1/ clang 3.3
- clef : lazy_method is broken . remove it from the test for the moment.
This commit is contained in:
parent
4bbcbe35ef
commit
1dd2d9e691
@ -98,7 +98,7 @@ Example :
|
||||
double my_method(double x) { return 2*x;}
|
||||
|
||||
// CLEF overload
|
||||
TRIQS_CLEF_IMPLEMENT_LAZY_METHOD(Obj,my_method);
|
||||
//TRIQS_CLEF_IMPLEMENT_LAZY_METHOD(Obj,my_method);
|
||||
|
||||
// Just to print itself nicely in the expressions
|
||||
friend std::ostream & operator<<(std::ostream & out, Obj const & x) { return out<<"Obj";}
|
||||
@ -113,10 +113,11 @@ Example :
|
||||
std::cout << "Partial evaluation : "<< eval(f(y_) + 2*x_, y_=1) << std::endl ;
|
||||
std::cout << "Complete evalution : "<< eval(f(y_) + 2*x_, x_=3, y_=1) << std::endl<<std::endl ;
|
||||
|
||||
std::cout << "Clef expression : "<< f.my_method(y_) + 2*x_ << std::endl ;
|
||||
std::cout << "Complete evaluation : "<< eval(f.my_method(x_) + 2*x_, x_=1) << std::endl ;
|
||||
std::cout << "Partial evaluation : "<< eval(f.my_method(y_) + 2*x_, y_=1) << std::endl ;
|
||||
std::cout << "Complete evalution : "<< eval(f.my_method(y_) + 2*x_, x_=3, y_=1) << std::endl ;
|
||||
// not implemented on all compilers
|
||||
//std::cout << "Clef expression : "<< f.my_method(y_) + 2*x_ << std::endl ;
|
||||
//std::cout << "Complete evaluation : "<< eval(f.my_method(x_) + 2*x_, x_=1) << std::endl ;
|
||||
//std::cout << "Partial evaluation : "<< eval(f.my_method(y_) + 2*x_, y_=1) << std::endl ;
|
||||
//std::cout << "Complete evalution : "<< eval(f.my_method(y_) + 2*x_, x_=3, y_=1) << std::endl ;
|
||||
}
|
||||
|
||||
**NB** When the method or the non CLEF operator() is already a template,
|
||||
|
@ -323,11 +323,11 @@ namespace triqs { namespace clef {
|
||||
};
|
||||
}
|
||||
|
||||
template<int ... N>
|
||||
std::tuple<placeholder<N>...> var( placeholder<N> ...) { return std::make_tuple(placeholder<N>()...);}
|
||||
template<int ... N> struct ph_list {};
|
||||
template<int ... N> ph_list<N...> var( placeholder<N> ...) { return {};}
|
||||
|
||||
template<typename Expr, int ... N>
|
||||
auto operator >> (std::tuple<placeholder<N>...>, Expr const & ex) DECL_AND_RETURN( make_function(ex, placeholder<N>()...));
|
||||
auto operator >> (ph_list<N...>, Expr const & ex) DECL_AND_RETURN( make_function(ex, placeholder<N>()...));
|
||||
|
||||
/* --------------------------------------------------------------------------------------------------
|
||||
* make_function
|
||||
@ -507,7 +507,7 @@ namespace triqs { namespace clef {
|
||||
#define TRIQS_CLEF_IMPLEMENT_LAZY_METHOD(TY,name)\
|
||||
struct __clef_lazy_method_impl_##name { \
|
||||
TY * _x;\
|
||||
template<typename... A> auto operator()(A&&... a) const DECL_AND_RETURN ((*_x).name(std::forward<A>(a)...));\
|
||||
template<typename... A> auto operator()(A&&... a) const DECL_AND_RETURN (_x->name(std::forward<A>(a)...));\
|
||||
friend std::ostream & operator<<(std::ostream & out, __clef_lazy_method_impl_##name const & x) { return out<<BOOST_PP_STRINGIZE(TY)<<"."<<BOOST_PP_STRINGIZE(name);}\
|
||||
};\
|
||||
template< typename... A> \
|
||||
|
Loading…
Reference in New Issue
Block a user