Вы имели в виду псевдоним типа шаблона?
Если это так, то вам придется немного изменить синтаксис:
template<typename... Args>
using events_list = std::pair<char*, std::vector<void(*)(Args...)>>;
Если вы хотите использовать std::function
вместоуказателя на функцию, попробуйте это:
template<typename... Args>
using events_list = std::pair<char*, std::vector<std::function<void(Args...)>>;
Вы также, кажется, хотите удобный способ вставки новых событий.Это будет выглядеть немного иначе, если вы выберете контейнер, который выбрали:
// static member function are normal function pointers.
button_event.second.push_back(&YouClass::onClick);
Или вы также можете использовать лямбду.Без захватов оба контейнера будут работать:
button_event.second.push_back([](ButtonEvent e) {
onClick(e);
});
// with captures (only work with the std::function)
button_event.second.push_back([this](ButtonEvent e) {
this->onClickNonStatic(e);
});