1

Boost.Fusionのドキュメントには、BOOST_FUSION_ADAPT_STRUCTによって構造体が完全に互換性のあるBoost.Fusionランダムアクセスシーケンスになると記載されています。
私は次のことを試しました:

#include <iostream>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/at.hpp>

struct Str {
    int i;
    float j;
};

BOOST_FUSION_ADAPT_STRUCT(
    Str,
    (int, i)
    (float, j)
)

int main() {
    Str s;
    boost::fusion::at<0>(s) = 1;
}

また、コンパイラから「at(Str&)の呼び出しに一致する関数がありません」というエラーが表示されました。
私が使用しているコンパイラはg++です。
私は何が間違っているのですか?
前もって感謝します。

4

1 に答える 1

4
boost::fusion::at<boost::mpl::int_<0>>(s) = 1;

NはMPL積分定数でなければならないため

Boost ::fusion :: at

于 2012-08-19T18:34:22.187 に答える