制作可变参数模板 forward_list class
Making a forward_list of a variadic template class
我有一个 std::forward_list
和一个 class Delegate
(取自 here),它有一个 class 和可变类型签名(typename return_type, typename... Args
)。
我想用这些 Delegate
制作一个 std::forward_list
。我将如何去做呢?我试过:
std::forward_list<Delegate<void, typename...> >
但它给出了语法错误。我还想稍后添加到此列表中。我可以保证这些列表中的每一个(会有多个)只会有 Delegate
类型,它们将相同数量的参数存储在一起。但是,每个列表可能有一个方法列表,这些方法采用与其他列表中的方法不同的参数。
这些列表实际上将位于 std::unordered_map
.
中
首先,听起来您应该使用 unordered_multimap
而不是将列表作为值的地图。
就是说,如果您尝试在 STL 容器中存储类型,即使这些类型稍有不同,您也需要创建一个基 class 并将它们存储为指向该基的指针 class.您提到一个列表中的所有值都将具有相同数量的参数,但您没有指定参数将完全相同。
我有一个 std::forward_list
和一个 class Delegate
(取自 here),它有一个 class 和可变类型签名(typename return_type, typename... Args
)。
我想用这些 Delegate
制作一个 std::forward_list
。我将如何去做呢?我试过:
std::forward_list<Delegate<void, typename...> >
但它给出了语法错误。我还想稍后添加到此列表中。我可以保证这些列表中的每一个(会有多个)只会有 Delegate
类型,它们将相同数量的参数存储在一起。但是,每个列表可能有一个方法列表,这些方法采用与其他列表中的方法不同的参数。
这些列表实际上将位于 std::unordered_map
.
首先,听起来您应该使用 unordered_multimap
而不是将列表作为值的地图。
就是说,如果您尝试在 STL 容器中存储类型,即使这些类型稍有不同,您也需要创建一个基 class 并将它们存储为指向该基的指针 class.您提到一个列表中的所有值都将具有相同数量的参数,但您没有指定参数将完全相同。