3

これをコンパイルしようとすると:

#include <boost/fusion/container/map.hpp>
#include <boost/mpl/fold.hpp>

int main(int argc, char** argv)
{
    typedef boost::fusion::map
    <
        boost::fusion::pair<int, const char*>,
        boost::fusion::pair<long, char>
    > FuMap;

    FuMap fuMap("hello", 'w');

    unsigned val = boost::mpl::fold
    <
        FuMap, boost::mpl::int_<0>, boost::mpl::next<boost::mpl::_1>
    >::type::value;
}

次のエラーが表示されます。

"...boost/mpl/begin_end.hpp", line 35: Error, nofieldfnd: 
apply is not a member of 
boost::mpl::begin_impl<boost::fusion::fusion_sequence_tag>.

Fusion のドキュメントから: 「Fusion は MPL との完全な互換性を提供します。Fusion シーケンスは MPL シーケンスに完全に準拠しており、MPL シーケンスは Fusion と完全に互換性があります。タイプのみで作業したい場合は、MPL で Fusion シーケンスを使用できます。」

boost::mpl::map を渡すと機能します。

手がかりはありますか?

4

1 に答える 1

1

http://news.gmane.org/gmane.comp.lib.boost.userで同じ質問をしたところ、Christopher Schmidt からの回答は正しかった:

#include <boost/fusion/mpl.hpp>

問題を解決する必要があります」

于 2009-12-30T17:05:37.270 に答える