获取std :: variant的基础类型

Thé*_*ion 0 c++ variant c++17

快速提问:

是否有可能获得std::variant运行时使用的基础类型?

我的第一个猜测是使用decltype()这样的:

    std::variant<int, float> v;
    v = 12;
    std::vector<decltype(v)> vec;
Run Code Online (Sandbox Code Playgroud)

但我的向量的声明类型std::vector<std::variant<int, float>>不是std::vector<int>.

知道如何实现这一目标吗?:)

Sla*_*ica 5

是否有可能在运行时获取std :: variant使用的基础类型?

是的,绝对是

知道如何实现这一目标吗?

您尝试实现与"在运行时获取std :: variant所使用的基础类型"非常不同的东西,作为std::vector运行时定义类型.这是一个非常不同的问题,在这种形式下绝对不可能,因为模板实例化在编译时发生.最近的解决方案是std::variant<std::vector<int>, std::vector<float>>根据变量的运行时信息使用和使用不同的向量v