このページにある従業員のサンプルコードをコンパイルできます。
このようにさらに8つの文字列で構造を拡張すると、次のようになります。
struct employee
{
int age;
std::string surname;
std::string forename;
std::string a1;
std::string a2;
std::string a3;
std::string a4;
std::string a5;
std::string a6;
std::string a7;
std::string a8;
double salary;
};
(もちろん、BOOST_FUSION_ADAPT_STRUCTと文法も拡張します)。コンパイルしようとすると、次のエラーが発生します。
../include/boost/fusion/container/vector/convert.hpp:26:13: error: invalid use of incomplete type ‘struct boost::fusion::detail::as_vector<12>’
../include/boost/fusion/container/vector/detail/as_vector.hpp:26:12: error: declaration of ‘struct boost::fusion::detail::as_vector<12>’
これは、構造体に10個を超えるアイテムがある場合に発生することがわかりました。2つの質問:
- なぜこの制限があるのですか?
- どうすれば回避できますか?
どんな入力でも大歓迎です。