Fusion: Structs containing an array

Hi! I am trying to use boost fusion to build [de]serializer for simple types (int ...) and structs. I had success until I tried structures holding arrays. Example: struct EntryTable { unsigned int count; unsigned int data[4]; }; BOOST_FUSION_ADAPT_STRUCT( EntryTable, (unsigned int, count) (unsigned int, data[4]) ) I would wish to get a fusion::vector<unsigned int, unsigned int[4]>, but the assignment of the struct only compiles if the fusion vector is defined as fusion::vector<unsigned int, unsigned int>. EntryTable t; fusion::vector<unsigned int, unsigned int> f1 = t; // works fusion::vector<unsigned int, unsigned int[4]> f2 = t; // doesnt work (not even compile) What am I doing wrong? Is there a simple way to simple wrap an array using fusion? Bye Gunther using boost 1.42 g++ 4.4.5

2011/2/1 Gunther Laure <gunther.laure@gmail.com>
Hi!
I am trying to use boost fusion to build [de]serializer for simple types (int ...) and structs. I had success until I tried structures holding arrays.
Example: struct EntryTable { unsigned int count; unsigned int data[4]; };
BOOST_FUSION_ADAPT_STRUCT( EntryTable, (unsigned int, count) (unsigned int, data[4]) )
[...]
fusion::vector<unsigned int, unsigned int[4]> f2 = t; // doesnt work (not even compile)
[...]
What am I doing wrong? Is there a simple way to simple wrap an array using fusion?
It's infeasible to use C-array here since there's no assignment for such. Use Boost.Array instead. Sample code --------------------- typedef boost::array<unsigned int, 4> array_t; struct EntryTable { unsigned int count; boost::array<unsigned int, 4> data; }; BOOST_FUSION_ADAPT_STRUCT( EntryTable, (unsigned int, count) (array_t, data) ) ... EntryTable t; fusion::vector<unsigned int, array_t> f2 = t; // now it should work HTH
participants (2)
-
Gunther Laure
-
TONGARI