From looking at the docs, is it because you're wrapping the member type in parens?

BOOST_FUSION_DEFINE_STRUCT(
    (namespace0)(namespace1)...,
    struct_name,
    (member_type0, member_name0)
    (member_type1, member_name1)
    ...
    )

that is, have you tried:

BOOST_FUSION_DEFINE_STRUCT(
  (demo), curves,
  (std::map<std::string, std::string>, futures)
  (std::map<std::string, std::string>, credit_curves)
  )

On 30 July 2017 at 17:25, Robert Jones via Boost-users <boost-users@lists.boost.org> wrote:
Hi Peeps

Can anyone tell me what's wrong with this? I think macro expansion is going awry, but I'm not sure why. Do I really have to typedef the map<...> type to keep Fusion happy?

Thx.

#include<string>
#include<map>

#include <boost/fusion/adapted/struct/define_struct.hpp>
#include <boost/fusion/include/define_struct.hpp>

BOOST_FUSION_DEFINE_STRUCT(
  (demo), curves,
  ((std::map<std::string, std::string>), futures)
  ((std::map<std::string, std::string>), credit_curves)
  )

int main( )
{
  return 0;
}

> make
fusion.cpp|9 col 39| error: invalid declarator before ‘)’ token                                              
||    ((std::map<std::string, std::string>), futures) 


Kind Regards

Rob.


_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users