On Tue, Feb 9, 2010 at 3:49 PM, Gabriel Redner
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
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
... #define FUSION_MAX_VECTOR_SIZE 20 #include ... // 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.