【发布时间】:2017-05-31 13:23:18
【问题描述】:
如果我有一个std::map<int, char>,它很容易初始化:
std::map<int, char> myMap =
{
{ 1, 'a' },
{ 2, 'b' }
};
如果我的值类型有一个默认构造函数,我可以像这样初始化它:
struct Foo
{
char x;
};
std::map<int, Foo> myMap =
{
{ 1, Foo() },
{ 2, Foo() }
};
但是假设我的值类型有一个默认的构造函数,但是很难输入:
std::map<int, yourNamespace::subLibrary::moreLevels::justBecause::Thing> myMap =
{
// What goes here? I don't want to type
// yourNamespace::subLibrary::moreLevels::justBecause::Thing again.
};
缺少using 声明以使值类型对键盘更友好,有没有办法用一组键初始化map,所有这些都使用默认构造的yourNamespace::subLibrary::moreLevels::justBecause::Thing?如何表示我希望映射值是默认构造的类型?
【问题讨论】:
标签: c++ initializer-list default-constructor