26 #ifndef MAQUIS_FUNCTION_OBJECTS_H
27 #define MAQUIS_FUNCTION_OBJECTS_H
29 #include <alps/numeric/conj.hpp>
32 using alps::numeric::conj;
34 #define DEFINE_FUNCTION_OBJECT(name, return_type, arg_type) \
35 struct functor_##name { template<class T> return_type operator() (arg_type t) { return name(t); } };
37 #define DEFINE_VOID_FUNCTION_OBJECT(name, arg_type) \
38 struct functor_##name { template<class T> void operator() (arg_type t) { name(t); } };
54 #undef DEFINE_FUNCTION_OBJECT
55 #undef DEFINE_VOID_FUNCTION_OBJECT
67 template<
class T1,
class T2>
68 T1
operator()(std::pair<T1, T2>
const & p) {
return p.first; }
73 template<
class T1,
class T2>
74 T2
operator()(std::pair<T1, T2>
const & p) {
return p.second; }
T2 operator()(std::pair< T1, T2 > const &p)
T1 operator()(std::pair< T1, T2 > const &p)
#define DEFINE_FUNCTION_OBJECT(name, return_type, arg_type)
std::size_t size_of(Iterator i1, Iterator i2)
block_matrix< Matrix, SymmGroup > adjoint(block_matrix< Matrix, SymmGroup > m)
block_matrix< Matrix, SymmGroup > sqrt(block_matrix< Matrix, SymmGroup > m)
block_matrix< Matrix, SymmGroup >::scalar_type trace(block_matrix< Matrix, SymmGroup > const &m)
block_matrix< Matrix, SymmGroup > conjugate(block_matrix< Matrix, SymmGroup > m)
#define DEFINE_VOID_FUNCTION_OBJECT(name, arg_type)
block_matrix< typename maquis::traits::transpose_view< Matrix >::type, SymmGroup > transpose(block_matrix< Matrix, SymmGroup > const &m)