【发布时间】:2022-01-09 12:41:28
【问题描述】:
我有一个名为 Registry 的类,它将 ID 与一些数据相关联。
我想让存储这些对的底层结构可以是用户可以定义的任何std::mapish 类型(例如:std::map、std::unordered_map)。
我最初的想法是做这样的事情:
template<typename Value, typename Container, typename ID = size_t>
class Registry{
using Storage = Container<ID, value>;
static_assert(std::is_same<Storage, std::map> || std::is_same<Storage, std::map>, "Underlying storage type must be a std::map-ish.");
public:
Storage<ID, Value> store;
...
但是,尝试使用该类会导致错误:
Registry<bool, std::map> testRegistry;
err) argument list for class template std::map is missing
我了解编译器的抱怨,但有什么办法可以解决这个问题,以便这种语法(或类似的东西)可以工作?
感谢您的建议。
【问题讨论】:
标签: c++ templates template-templates