我目前正在为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 中的所有构造函数