【发布时间】:2015-11-10 16:53:57
【问题描述】:
在初始化std::map<std::string, boost::any> 时,boost::any 的值确实可以采用任何类型的值,包括std::maps。但是,它们需要首先明确定义,例如,
#include <map>
#include <boost/any.hpp>
int main() {
std::map<std::string, boost::any> a = {{"y", 2}};
std::map<std::string, boost::any> any = {
{"hh", 4},
{"g", a} // alright
};
}
隐式地尝试相同的事情,例如,
#include <map>
#include <boost/any.hpp>
int main() {
std::map<std::string, boost::any> any = {
{"hh", 4},
{"g", {{"y", 2}}} // mööp
};
}
导致编译错误
error: could not convert ‘{{"hh", 4}, {"g", {{"y", 2}}}}’ from ‘<brace-enclosed initializer list>’ to ‘std::map<std::__cxx11::basic_string<char>, boost::any>’
怎么了?有没有办法将初始化放入一个语句中?
【问题讨论】:
标签: c++ c++11 dictionary boost