Задать вопрос
@232321fdsa

Ошибка с std::thread. Как ее решить?

Здраствуйте всем, у меня есть метод который должен вызывать указанную функцию когда совпадает дата и также можно дополнительно указать делать ли новый поток в котором будет отслеживаться совпадает ли дата, но у меня появляется ошибка.
Вот код:
template<class FuncTy, class... Args>
void EventOnDate(int16_t day = 0, int16_t month = 0, int64_t year = 0, TypeEra era = AD, bool CreateThreadAndAlwaysCheck = false, std::function<FuncTy> Event = nullptr, Args&&... args) const {
	year = era == AD ? year : -year;
	if (this->day == day && this->month == month && this->year == year) {
		if (Event) {
			Event(std::forward<Args>(args)...);
		}
		else {
			if (CreateThreadAndAlwaysCheck) {
				std::thread EventOnDateThread(EventOnDateThread, day, month, year, era, true, Event, std::forward<Args>(args)...);
				EventOnDateThread.detach();
			}
		}
	}
}

и ошибка: std::thread::thread: нет перегруженной функции, принимающей 8 аргументов
Я конечно понимаю про что мне сообщает ошибка, но в моей функции которую я хочу отправить в новый поток именно столько аргументов.

Спасибо заранее!
  • Вопрос задан
  • 116 просмотров
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@school_toddler
Ошибка и-за того, что конструктор std::thread не принимает список аргументов для функции отдельно, попробуй передавать аргументы отдельно, обернув в лямбду.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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