Определение проблемы multi_index_container order_non_unique

Я играю с некоторыми буст-контейнерами, но недавно у меня появилась блокада, так как я не могу правильно определить multi_index_container. Я следую примеру, который я взял в автономном режиме, но он по-прежнему выдает мне сообщение об ошибке:

struct boost::multi_index::global_fun<const node&, int, <error-constant>>

Error: Expression must have a constant value

Вот моя декларация:

#define _CRT_SECURE_NO_DEPRECATE
#define _SCL_SECURE_NO_DEPRECATE
#include <boost/config.hpp>

#include <string>
#include <iostream>

#include <boost/multi_index_container.hpp>
#include <boost/multi_index/key_extractors.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/global_fun.hpp>
#include <boost/multi_index/ordered_index.hpp>
using namespace boost::multi_index;

struct node
{
node(std::string da, int in) {
data = da;
numerical = in;
};
std::string data;
int numerical;
};

int main()
{
typedef multi_index_container<
node,
indexed_by<
hashed_unique<
member<node,std::string, &node::data>>,
ordered_non_unique<
global_fun<const node&, int, node::numerical>> //right here, the value numerical errors
>
> node_type;}

У меня есть догадка, что я не включаю файл для этого, но я не могу найти решение.

0

Решение

Это должно сделать это:

typedef multi_index_container<
node,
indexed_by<  hashed_unique< member<node,std::string, &node::data> >
, ordered_non_unique< member<node, int, &node::numerical> >
>
> node_type;

global_fun ожидает, ну, в общем, глобальная функция. &node::numerical член так же, как &node::data, Конечно, вы можете написать функцию, которая принимает узел и извлекает его, но зачем вам это?

Вам также не хватает member.hpp включают.

1

Другие решения

Других решений пока нет …