Problem with error C2440 in MS VS 2015

570
06 февраля 2017, 16:40

Первая часть кода:

template< typename data_type >
void Agent::set_solution(
const solution_key_t& key,
data_type& data,
std::function< void(data_type&, data_type&) > function,
std::double_t probability)
{
        if (std::find(this->m_solutions.begin(), this->m_solutions.end(), key) == this->m_solutions.end())
        {
            using solution_map_t = std::map< solution_key_t, Solution >;
            this->m_solutions.insert(solution_map_t::value_type(key, Solution()));
        }
        this->m_solutions[key].set_solution< data_type >(data, function, probability);
} // set_solution

Вторая часть кода:

#define AGENT(id)   System::instance().agents[id]
static const solution_key_t default_key = "key";
static const std::double_t default_probability = 1.0;
#define DEFAULT_LAMBDA_EQ(T)    [](T& to, T& from) { to = from; }
using asset_id_t = std::uint64_t;
auto function_asset_id_smth = [](agent_id_t id)
{
    using T = std::pair< asset_id_t, std::string >;
    T asset_id(static_cast< asset_id_t >(1), static_cast< std::string >("smth"));
    AGENT(id)->set_solution< T >(
        default_key,
        asset_id,
        DEFAULT_LAMBDA_EQ(T),
        default_probability);
}; // function_asset_id_smth

Возникает ошибка: Ошибка C2440 : невозможно преобразовать "initializer list" в "std::pair" в строке с вставкой нового элемента в map в первом фрагменте кода. Я не вполне понимаю, как трактовать эту ошибку, где-то теряется или добавляется спецификатор const? Или в аргументах при вызове функции следует указывать другие спецификаторы? Как мне кажется, проблема с key в первом фрагменте кода, но я не могу пока установить, какая именно. Для Solution есть конструктор по умолчанию, там все нормально. solution_key_t это std::string.

READ ALSO
Проблема подключения Lua к C++

Проблема подключения Lua к C++

Использую исходный код lua-53

486
Cimg, jpeglib и visual studio

Cimg, jpeglib и visual studio

Никак не могу разобраться как заставить работать Cimg с jpegПодключить всё подключил:

778
Не умирает процесс (WinAPI)

Не умирает процесс (WinAPI)

ПриветПосле закрытия окна процесс не хочет умирать

508