Boost logo

Boost Users :

From: Joel de Guzman (joel_at_[hidden])
Date: 2006-05-01 23:31:18


John Christopher wrote:
> Hello,
> The example at the bottom of:
> http://spirit.sourceforge.net/dl_more/fusion_v2/libs/fusion/doc/html/fusion/sequences/views/transform_view.html
> does not compile; I am using MinGw 3.4.2.

[snip]

> More specifically it is the line
> std::cout << transform << std::endl;

Works fine for me. See attached.

> that seems to create the problem.
> I was also wondering why operator() of square return int and not T.

Yes, it should be T. Noted. Thanks for spotting that. It's
corrected in the cpp file I just sent.

Regards,

-- 
Joel de Guzman
http://www.boost-consulting.com
http://spirit.sf.net

/*=============================================================================
    Copyright (c) 2001-2006 Joel de Guzman

    Use, modification and distribution is subject to the Boost Software
    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
    http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#include <iostream>
#include <boost/fusion/sequence.hpp>
#include <boost/fusion/algorithm.hpp>

struct square
{
    template <typename T>
    struct result
    {
        typedef T type;
    };

    template <typename T>
    T operator()(T x) const
    {
        return x * x;
    }
};

int
main()
{
    using namespace boost::fusion;

    typedef vector<int, short, double> vector_type;
    vector_type vec(2, 5, 3.3);
    
    transform_view<vector_type, square> transform(vec, square());
    std::cout << transform << std::endl;

    return 0;
}


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