у меня есть std::forward_list
и у меня есть класс Delegate
(взято из Вот), который имеет класс с сигнатурой типа variadic (typename return_type, typename... Args
).
Я хочу сделать std::forward_list
из этих Delegate
s. Как бы я поступил так? Я пытался:
std::forward_list<Delegate<void, typename...> >
но это дает синтаксическую ошибку. Я также хотел бы добавить к этому списку позже. Я могу гарантировать, что каждый из этих списков (будет несколько) будет иметь только Delegate
типы, которые принимают одинаковое количество параметров, хранящихся вместе. Однако каждый список может иметь список методов, которые принимают параметры, отличные от методов в других списках.
Эти списки на самом деле будут внутри std::unordered_map
,
Во-первых, похоже, что вы должны использовать unordered_multimap
вместо карты со списками в качестве значений.
Тем не менее, если вы пытаетесь хранить типы в контейнере STL, которые даже немного отличаются, вам нужно создать базовый класс и хранить их как указатели на этот базовый класс. Вы упомянули, что все значения в одном списке будут иметь одинаковое количество параметров, но вы не указали, что параметры будут полностью идентичны.