Boost logo

Boost Users :

Subject: Re: [Boost-users] How to use the "type" member template pattern for using result_of?
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-08-28 12:47:00


AMDG

Jesse Perla wrote:
> 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;
> }
> };
>

struct test_function {
    template<typename Sig>
    struct result;
    template<typename This, typename Arg1, typename Arg2>
    struct result<This(Arg1, Arg2)> {
        typedef typename boost::remove_reference<Arg1>::type::value_type
type;
    };
};

In Christ,
Steven Watanabe


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