首页 > 解决方案 > 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';
}

标签: c++boost

解决方案


虽然不完全相同,但您可以使用基于指针的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';

推荐阅读