【问题标题】:Using variant variable as input to other variant function使用变体变量作为其他变体函数的输入
【发布时间】:2021-10-28 12:01:49
【问题描述】:

我正在使用两种不同的变体,其中一种可以容纳比另一种更多的类型。

typedef std::variant<boost::blank, double> EmptyDouble;
typedef std::variant<boost::blank, double, int> EmptyDoubleOrInt;

现在我想使用一个以 EmptyDoubleOrInt 作为参数的函数。此函数适用于整数、双精度或空白,但不适用于 EmptyDouble 类型:

SomeFunction(EmptyDoubleOrInt input);

我如何将 EmptyDouble 转换为空白或双精度,而无需知道它具有什么类型。那么这将是该函数的正确输入吗?

SomeFunction(DoSomething(emptyDouble))

【问题讨论】:

    标签: c++ boost-variant


    【解决方案1】:

    您可以使用std::visitemptyDouble 构造EmptyDoubleOrInt

    SomeFunction(std::visit([](const auto& a) -> EmptyDoubleOrInt {
        return a;
    }, emptyDouble));
    

    【讨论】:

    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2017-10-15
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多