【问题标题】:variant is not assigning the float变体没有分配浮点数
【发布时间】:2021-02-21 16:07:05
【问题描述】:
#include <iostream>
#include <variant>
using namespace std;
 
int main()
{
    variant<int, float> var{0.23};
    if(holds_alternative<float>(var)){
        if(var.index() == 1){
            cout << get<float>(var) << endl;
        }
    }
    
    return 0;
}

初始化应该可以工作,但它给出了以下错误:

main.cpp:在函数“int main()”中: main.cpp:7:33: 错误:没有匹配函数调用 'std::variant::variant()'

我不确定我是否在代码中犯了错误。

【问题讨论】:

    标签: c++ c++17 variant


    【解决方案1】:

    0.23double。您应该改用0.23f,即float

    【讨论】:

      【解决方案2】:

      由于花括号内的变窄转换,初始化失败。所以使用

         variant<int, float> var{0.23f};
      

      改为。

      请注意,0.23 是一个双字面值,而不是 float 一个。

      demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-30
        相关资源
        最近更新 更多