$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: dan marsden (danmarsden_at_[hidden])
Date: 2007-09-12 02:22:47
Martin Ecker wrote:
>I need something like the following (somewhat contrived) example to
>work with boost::fusion::transform on a boost::fusion::vector<int&> or
>other vector types that have reference types.
>Note that the following doesn't compile.
<snip original example>
The following code allows references to pass through, as I believe you want. It just
uses a slight modification to your function object to allow it to cope with references
correctly. 
namespace
{
    struct pass_through
    {
        template<typename Sig>
        struct result;
        template<typename T>
        struct result<pass_through(T&)>
        {
            typedef T& type;
        };
        template<typename T>
        T& operator()(T& t) const
        {
            return t;
        }
    };
}
int main()
{
    typedef fusion::vector<int&> vec;
    int i = 202;
    vec v1(i);
    vec v2(fusion::transform(v1, pass_through()));
    std::cout << fusion::at_c<0>(v2) << std::endl; // Output 202
}
Is this ok for your needs?
Cheers
Dan
      ___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try it
now.
http://uk.answers.yahoo.com/