如果我使用 设置通用容器映射boost::any
,并使用nullptr
C++11 中的 new 作为类似于isset()
类型操作的初始化值,是否有任何潜在的陷阱?
例如:
std::map<std::string, boost::any> map;
map["A"] = nullptr;
map["B"] = nullptr;
map["C"] = nullptr;
map["D"] = nullptr;
map["A"] = 1;
map["C"] = 3;
// assume error checking, other types, etc.
for(auto k : map) {
if (k.second.type() != typeid(nullptr)) {
std::cout << k.first << " : " << boost::any_cast<int>(k.second) << std::endl;
}
}
在 C++11 之前,我将boost::any
struct 包裹在带有 a 的结构中bool isset
,但这似乎有效。有什么陷阱吗?