首页 > 解决方案 > 定义一个函数以返回指定类型的 std::variant c++

问题描述

我对使用 c++17 规则几乎是新手。我的问题很简单;如何以我定义它们的相同顺序访问 std::variant 类型?我知道下面的代码不起作用!

#include <variant>
#include <iostream>

using myVariant = std::variant<double, int, std::string>;

template<typename T>
T   typeReturn(int i);

int main(void)
{
    myVariant b = 1.2;

    double c = typeReturn(1)(b);

    std::cout << c << std::endl;

    return 0;
}

template<typename T>
T typeReturn(int i)
{
    if (i == 0) return std::get<double>;
    else if (i == 1) return std::get<int>;
    else if (i == 2) return std::get<std::string>;
    else return std::get<int>;
}

标签: c++c++17variantstd-variant

解决方案


如何以我定义它们的相同顺序访问 std::variant 类型?

无需自己编写 -std::get已经这样做了。只是:

double c = std::get<0>(b);

推荐阅读