【发布时间】:2021-02-04 07:54:06
【问题描述】:
我有这个函数可以在 map 中查找键并返回正确的值:
template< typename T >
T Foo::findInMap(std::string key) {
std::map<std::string, std::any>::iterator it = options.find(key);
if (it != options.end())
{
return std::any_cast<T>(it->second);
}
return nullptr;
}
地图如下所示:
std::map<std::string, std::any> options;
如何调用和修改函数以充分利用 C++17?
【问题讨论】:
-
这不是 C++17 而是“C++98”:您也许可以将标准构造的 T 变量的地址提供给查找函数,而不是按值返回它。因此,可以使用 bool 返回而不是
nullptr,由于当前的返回类型规范(可能是错字?),这也将不起作用。 -
std::optional是 C++17 -
这不是代码审查,我是 c++17 的新手