I am trying to inherit from boot::multiindex and see what all I can do, while doing so insert works fine but replace is not.
Code
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/identity.hpp>
#include <boost/multi_index/mem_fun.hpp>
#include <string>
#include <utility>
#include <iostream>
using namespace boost::multi_index;
struct employee
{
std::string name_;
int id;
int state;
employee(std::string name, int id)
: name_{std::move(name)},
id(id),
state(0) {}
employee(const employee& copy):
name_(copy.name_),
id(copy.id),
state(copy.state){}
bool operator<(const employee &a) const
{
return id < a.id;
}
const std::string& get_name() const
{
return name_;
}
};
struct names{};
typedef multi_index_container<
employee,
indexed_by<
ordered_unique<
identity<employee>
>,
hashed_unique<
tag<names>,
const_mem_fun<
employee, const std::string&, &employee::get_name
>
>
>
> employee_container;
typedef employee_container::index<names>::type::iterator employee_iterator_by_name;
//using employee_by_name = employee_container::nth_index<ANTENNA_INDEX_BY_NAME>::type&;
class employee_db: public employee_container
{
public:
void add_db(const employee& e)
{
this->insert(e);
}
void update_db(
employee_iterator_by_name& it
)
{
this->replace(it, *it);
}
};
compiling it in Linux
gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)
[sandbox@localhost multiindex]$ rpm -qa | grep boost | grep devel
boost-devel-1.66.0-7.el8.x86_64
[sandbox@localhost multiindex]$ g++ 2.cc -c -std=c++11
2.cc: In member function ‘void employee_db::update_db(employee_iterator_by_name&)’:
2.cc:75:31: error: no matching function for call to ‘employee_db::replace(employee_iterator_by_name&, const value_type&)’
this->replace(it, *it);
What is it that I am doing wrong?
Aucun commentaire:
Enregistrer un commentaire