В чем заключается ошибка?

class ThreadPool_Extra
{
	struct Data
	{
		int ref;
		void* data;
	};

	typedef std::pair<std::function<void(lua_State*, int)>, Data> Pair;
	typedef std::pair<std::thread, Pair> Pair2;

    public:
        ThreadPool_Extra(lua_State* L)
        {
            // gmod think function bind.
        }

        __forceinline void CreateCustomAction(const std::string& name, int ref,
            std::function<void(void*)> b,
            std::function<void(lua_State*, int)> f)
        {
			Data data;
			data.ref = ref;
			data.data = NULL;
			std::thread th(b, data.data);
			
			container.insert(Pair2(th, Pair(f, data)));

			th.detach();
        }

	private:
        std::map<std::thread, Pair> container;
};


Почему то возникает ошибка несоответствия аргументов, но параметры указаны верно, в чем проблема?
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 1
alex1951
@alex1951
"умных преподавателей слушал я невнимательно..."
Наверное, ошибка в std::map 'std::thread, Pair' container; thread не имеет оператора == или < именно со thread, имеет со thread::id. Надо исправить на std::map'std::thread::id, Pair' container; Ну, и соответственные изменения в определениях Pair...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы