是否可以更改此 C++11 初始化:
const std::map<int, std::map<int, std::string>> test =
{{1,
{{1, "bla"},
{2, "blie"}
}
},
{3,
{{1, "ha"},
{2, "hie"}
}
}
};
在不使用临时变量的情况下使用 Boost.Assignment 的某种形式?map_list_of
不幸的是,以这种方式嵌套似乎是不可能的。我错了吗?
注意:我为一些可怕的宏做好了准备。只要它通常可以正常工作就可以了。可变参数模板不行,因为目标编译器是 Intel C++ 2013 和/或 MSVS2012。
编辑:我想使用的“理想”包装界面看起来像这样:
//header
extern const std::map<int, std::map<int, std::string>> test;
// source file
/*something*/ test
/*something*/ 1,
/*something*/ 1, "bla" /*something*/
/*something*/ 2, "blie" /*something*/
/*something*/ 2 //etc...
任何地方都/*something*/
可以是空的。这应该同时使用 C++11 大括号 init 或boost::assign::map_list_of
. 我试图避免像这里这样的手动重复:https ://stackoverflow.com/a/1872506/256138