Fad*_*mic 2 c++ boost-any c++11
如果我使用设置通用容器映射boost::any,并使用nullptrC++ 11中的新函数作为类似于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;
}
}
Run Code Online (Sandbox Code Playgroud)
在C++ 11之前,我把它boost::any包装在带有a的结构中bool isset,但这似乎有效.任何陷阱?
我不能看到任何陷阱(除了小心专门设置它nullptr_t而不是任何其他指针类型); 但为什么不把它留空,并用它的empty()成员函数检查它?
| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |