Как я могу создать следующую структуру 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, в которой я не могу заранее определить определения типов. Например, я мог бы захотеть сделать что-то вроде этого:
BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE(
(A)(B)(C),
MyAdvancedStruct,
(A<B, C>, bar)
)
(std::array<int BOOST_PP_COMMA() 3>, foo)
не работает. 09.05.2014declval<>
танец. 09.05.2014