c++ - Boost Variant 是否提供与 std 的 hold_alternative 类似的功能?
问题描述
我在 cppreference.com 上找到了这段代码。我想知道 boost 是否为其变体类型提供了类似的功能。我发现 boost 文档真的很糟糕,找不到任何东西。
int main()
{
std::variant<int, std::string> v = "abc";
std::cout << std::boolalpha
<< "variant holds int? "
<< std::holds_alternative<int>(v) << '\n'
<< "variant holds string? "
<< std::holds_alternative<std::string>(v) << '\n';
}
解决方案
虽然不完全相同,但您可以使用基于指针的get
函数:
boost::variant<int, std::string> v = "abc";
std::cout << std::boolalpha
<< "variant holds int? "
<< (boost::get<int>(&v) != nullptr) << '\n'
<< "variant holds string? "
<< (boost::get<std::string>(&v) != nullptr) << '\n';
推荐阅读
- ffmpeg - 使用 ffmpeg 和 vaapi 对 HEVC 4K HDR 进行转码
- c# - 使用 Ninject 绑定 PetaPoco
- python - 将张量提供给模型
- jquery - 这会对我网站的加载时间产生负面影响吗?
- excel - 基于其他列值删除列值的 VBA 脚本
- sql - 错误代码:-802,SQL 状态:22023 SQL0802
- keras - 如何在 Julia 中将 Conv1d 与 MXNet.jl 或 Flux 一起使用?
- python - 将画布内容转换为画布可创建图像 tkinter
- ios - 错误:必须提供以下参数之一:[:customer, :issueing_card]
- android - 为什么 Google ReCaptcha API 允许错误的密钥和/或错误的用户令牌响应?