Boost.MultiIndex模板替换失败?

时间:2013-07-08 21:24:43

标签: c++ boost boost-multi-index

我正在尝试使用boost :: multi_index_container,它似乎在模板元编程魔法上窒息。我收到一个大量的错误转储结束于:

  

/opt/local/include/boost/multi_index/hashed_index.hpp:743:9:错误:   '类   boost :: multi_index :: detail :: hashed_index,boost :: hash,std :: equal_to,   升压:: multi_index ::详细:: nth_layer&。1,   提高:: intrusive_ptr,   boost :: multi_index :: indexed_by>,   boost :: multi_index :: ordered_non_unique,& md :: Order :: px> > >中   std :: allocator> >中   提高:: MPL :: vector0,   boost :: multi_index :: detail :: hashed_unique_tag>'没有名字的成员   “final_delete_node_”            这 - > final_delete_node _(

我在Mac OS X.8 Mountain Lion上使用Boost 1.53(MacPorts)。如何编译以下代码?感谢。

#include <boost/multi_index_container.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/mem_fun.hpp>
#include "Product.hpp"
#include <iostream>

int main(int argc, char* argv[])
{

    boost::multi_index_container<
        boost::intrusive_ptr<Product>,
        boost::multi_index::indexed_by<
            boost::multi_index::hashed_unique<
                boost::multi_index::const_mem_fun<
                    Product,
                    id_t,
                    static_cast<id_t (Product::*)() const>(&Product::id)
                >
            >,
            boost::multi_index::ordered_non_unique<
                boost::multi_index::const_mem_fun<
                    Product,
                    price_t,
                    static_cast<price_t (Product::*)() const>(&Product::price)
                >
            >
        >
    > cont;

    auto o = boost::intrusive_ptr<Product>(new Product());
    o->id(1).price(price_t(14.75));
    cont.insert(o);

    auto it = cont.get<1>().find(price_t(14.75));
    if (it!=cont.get<1>().end())
        std::cout << *(it);

    return 0;
}

1 个答案:

答案 0 :(得分:1)

未能加入<boost/multi_index/ordered_índex.hpp>