如何使用多维初始值设定项列表初始化自定义容器



我目前正在为std::map类型开发一个自定义包装器,其中包含ContainsValue()等其他方法。但由于我试图使它尽可能与std::map兼容,我想知道是否可以用"多维初始化器列表"初始化它。

我的自定义地图类型定义如下:

template <typename TKey, typename TValue>
class CustomMap {
private:
std::map<TKey, TValue> mapContent;
public:
// Some interaction methods here
void operator=(/* initialization type here */) {
/* initialization here */
}
}

我说的是这样一个初始化列表:

CustomMap<uint64_t, std::string> test = {
{ 0xFF, "MaxByte" },
{ 0xFFFF, "MaxWord" },
{ 0xFFFFFFFF, "MaxDWord" },
{ 0xFFFFFFFFFFFFFFFF, "MaxQWord" }
};

请注意,初始化中没有任何类型的强制转换。这一切都是自动发生的;与原始CCD_ 3类型一样。

当然,让一个像std::map一样使用std::initializer_list<value_type>的构造函数具有:https://en.cppreference.com/w/cpp/container/map/map

或者转发所有构造函数:转发C++0x 中的所有构造函数

最新更新