【发布时间】:2014-05-08 21:21:31
【问题描述】:
如何制作以下 Boost Fusion 结构?
#include <array>
#include <boost/fusion/include/define_struct_inline.hpp>
BOOST_FUSION_DEFINE_STRUCT_INLINE(
MyStruct,
(std::array<int, 3>, foo)
)
这无法编译(GCC 4.8.1 和 Boost 1.53),因为 std::array<int, 3> 被解释为 2 个参数而不是 1 个。
请注意,我不是在询问上面显示的特殊情况(这只是一个示例)。这个特殊问题有一个简单的解决方案,只需使用typedef std::array<int, 3> Int3Array;。
我问的是在 Boost Fusion 结构的字段列表中使用具有多个以逗号分隔的模板参数的类型作为类型的一般问题。最终,我想使用一个模板 Boost Fusion 结构,我无法提前定义 typedef。例如,我可能想做这样的事情:
BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE(
(A)(B)(C),
MyAdvancedStruct,
(A<B, C>, bar)
)
【问题讨论】: