A workaround that works could be
BOOST_FUSION_DEFINE_STRUCT_INLINE(
MyStruct,
(decltype(std::array<int, 3>()), foo)
)
Of course to make it /generally/ applicable
BOOST_FUSION_DEFINE_STRUCT_INLINE(
MyStruct,
(boost::remove_reference<decltype(std::declval<std::array<int, 3>>())>::type, foo)
)
Which seems to call for another macro... but, oh wait :) BOOST_PP_COMMA seems the better choice.
Proof of concept: http://coliru.stacked-crooked.com/a/f8b407b810fcfdc0