Boost logo

Boost Users :

Subject: [Boost-users] How to use the "type" member template pattern for using result_of?
From: Jesse Perla (jesseperla_at_[hidden])
Date: 2009-08-28 12:27:36


Take the following function:
struct test_function
{
    template<typename Vector, typename IntType>
    typename Vector::value_type
    operator()(const Vector& x, IntType bound_value) const{
        return x[0] * x[0] + bound_value;
    }
};

I wasn't sure exactly how the "type" member template pattern works so that
result_of will work.
I tried the following, but can't figure out how to extract the type of the
arguments or convert to an MPL sequence? Is there some trick I am missing?

struct test_function
{
    template<typename Args>
    struct result {
       //HOW TO CONVERT TO MPL SEQUENCE OR ANOTHER APPROACH?
        typedef typename boost::mpl::at_c<Args, 0 >::type::value_type type;
    };

    template<typename Vector, typename IntType>
    typename Vector::value_type //The type in the vector... can be a double
or AD type
    operator()(const Vector& x, IntType bound_value) const{
        return x[0] * x[0] + bound_value;
    }
};

Thanks,
Jesse



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net