Boost logo

Boost Users :

Subject: Re: [Boost-users] [fusion] Use of FUSION_MAX_VECTOR_SIZE in headers
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2010-02-09 19:53:31


On Tue, Feb 9, 2010 at 3:49 PM, Gabriel Redner <gredner_at_[hidden]> wrote:
> Hi all,
>
> I'm trying to use fusion vectors with more than 10 elements, but I'm
> running into some trouble.
>
> I'm using fusion as an implementation detail of some header-based
> tools, which get included (often indirectly) by some translation
> units.  The tools require large fusion vectors, but I don't want
> client code (i.e. the .cpp files) to have to care about this.  I was
> under the impression that I could just add:
>
> #define FUSION_MAX_VECTOR_SIZE 20
> #include <boost/fusion/container.hpp>
>
> in my tool's header file, and be off to the races.  It seems that this
> works only if no other fusion header has been included previously in
> the same translation unit:
>
> #include <boost/fusion/container.hpp>
> ...
> #define FUSION_MAX_VECTOR_SIZE 20
> #include <boost/fusion/container.hpp>
> ...
> // Error - too many template arguments!
> boost::fusion::make_vector(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
>
> I really don't want to have to track down every translation unit which
> is (usually indirectly) including my tool's header.  I am under the
> impression that boost::function is fine with client code redefining
> its limit macro and re-including its header, but perhaps fusion does
> not have the same feature?
>
> I also realize that for vector itself I can just include vectorN.hpp
> and use vectorN<...>, but if I want to use the generation functions
> (make_vector, vector_tie) it seems I'm stuck.  Is there a workaround,
> or just something obvious that I'm doing wrong?

make_vector/etc.. just use vector directly internally, you can do the
same in their place with the vectorN functions.


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