【发布时间】:2012-09-19 10:52:23
【问题描述】:
是否可以更改此 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
【问题讨论】:
标签: c++ boost c++11 variable-assignment list-initialization