読者です 読者をやめる 読者になる 読者になる

boost::multi_index_containerにinitializer_listのコンストラクタを追加するパッチ

C++

修正済みファイル boost/multi_index_container.hpp

パッチファイル multi_index_initializer_list.patch

テストコード test_initializer_list.cpp


こんな感じで書けるようにしました。

#include <iostream>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/sequenced_index.hpp>
#include <boost/range/algorithm/for_each.hpp>

using namespace boost::multi_index;
typedef multi_index_container<
    int,
    indexed_by<
        ordered_unique<identity<int> >,
        sequenced<>
    >
> container;

void disp(int x) { std::cout << x; }

int main()
{
    const container c = {3, 1, 4}; // この初期化

    boost::for_each(c, disp);           std::cout << std::endl;
    boost::for_each(c.get<1>(), disp);  std::cout << std::endl;
}
134
314

BoostのTracにも投稿しておきました。
https://svn.boost.org/trac/boost/ticket/4814