Функция, с которой я не могу работать:
void Add(const Event &event, T callback) noexcept
{
if constexpr (event == Event::Type1)
{
m_type1callbacks.push_back(callback);
}
else if constexpr (event == Event::Type2)
{
m_type2Callbacks.push_back(callback);
}
else if constexpr (event == Event::Type3)
{
m_type3Callbacks.push_back(callback);
}
else if constexpr (event == Event::Type4)
{
m_type4LeaveCallbacks.push_back(callback);
}
}
Функциональность: в зависимости от события Я хочу добавить обратный вызов в контейнер callback-functions
Примечание. Каждый контейнер создан на основе различных шаблонных версий std :: function <>
То, что я хочу достичь: Выражение, которое будет оцениваться во время компиляции и, таким образом, генерировать тела функций в зависимости от события . Итак, если m_type1Callbacks задан на std :: function , функция:
Add(Event::Type1, [](int foo){std::cout << foo << std::endl;}));
должна быть добавлена к m_type1Callbacks
Моя проблема: Когда я пытаюсь выполнить приведенный выше код, я получаю сообщение об ошибке:
'event' is not a constant expression
В чем мне нужна помощь: является ли мой способ решения этой проблемы неправильным с фундаментальной точки зрения? Как мне улучшить и решить эту проблему?
Заранее спасибо!