c++ - 如何比较两个 std::any?
问题描述
std::any 没有 operator==
我是否遗漏了一些明显的东西,还是我需要真正谋生?
有没有一些简单的方法来提供运营商?
https://godbolt.org/z/rdoWrcnTs
// Example program
#include <iostream>
#include <string>
#include <any>
int main()
{
auto str1 = std::make_any<std::string> ("Hello");
auto str2 = std::make_any<std::string> ("World");
if(str1 == str2) std::cout << "same"; // error
}
解决方案
没有直接的方法来比较两个对象,std::any
因为基础类型可能不同。如果你知道它们是相同的,你可以写:
if(std::any_cast<std::string>(str1) == std::any_cast<std::string>(str2))
// ...
推荐阅读
- python - 如何使用 Github 存储库上传和安装 Python 库
- amazon-web-services - 如何获取证书文件?
- c# - 使用硬件加速绘制像素的最佳方法
- native-base - 在 NX 工作区中使用 nativebase io 框架时面临问题 - 模块解析失败
- html - 如何使用 RSelenium 驱动浏览器并在地图应用程序中移动?
- python - 比较两种不同分辨率的图像
- julia - 如何使用“Symbolics.jl”中的“solve_for()”?
- cypress - 无法使用插件 cypress-drag-drop 拖放
- css - TailwindCSS:如何制作具有不同比例的响应式网格?
- swift - 将控制器初始化为初始状态