2

このページにある従業員のサンプルコードをコンパイルできます。

このようにさらに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つの質問:

  1. なぜこの制限があるのですか?
  2. どうすれば回避できますか?

どんな入力でも大歓迎です。

4

1 に答える 1

6

FUSION_MAX_VECTOR_SIZE必要な上限に定義しboost/fusion/container/vector/limits.hpp、デフォルトの定義を調べます。boost/fusion/container/vector.hpp次に、キャップに応じて前処理されたソースが条件付きで含まれます。

于 2012-05-09T16:10:19.673 に答える