Это с Boost 1.72.0. Что я делаю неправильно? Это простой пример, где я пытаюсь создать структуру с именем employee, которая может быть отсортирована как по id, так и по имени. Я хотел попробовать это, прежде чем интегрировать multi_index в более крупный и сложный проект, который требует гораздо больше индексов. Но я столкнулся с ошибками, используя код ниже. Я скомпилировал его, используя G CC 7.30. Поскольку сообщения об ошибках являются сложными и подробными, я их не включил.
Вот полный источник минимального примера:
#include <iostream>
#include <string>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/member.hpp>
using namespace boost::multi_index;
struct employee {
employee(unsigned int id, std::string name)
: id(id), name(name)
{}
unsigned int id;
std::string name;
bool operator<(const employee& other) const noexcept {
return this->id < other.id;
}
};
struct indexedById {};
struct indexedByName {};
using EmployeeContainer = boost::multi_index_container
<
employee,
indexed_by<
ordered_unique<tag<indexedById>, identity<employee>>,
hashed_non_unique<tag<indexedByName>, member<employee, std::string, &employee::name>>
>
>;
int main()
{
EmployeeContainer mi;
auto& inserter = mi.get<indexedByName>();
inserter.emplace(0, "uber duber");
inserter.emplace(1, "gotcha");
inserter.emplace(3, "dang");
for(auto& it : mi.get<indexedById>())
std::cout << it.id << ": " << it.name << std::endl;
std::cin.get();
return 0;
}