gpt4 book ai didi

c++ - 如何使用初始化列表来初始化 std::variant?

转载 作者:行者123 更新时间:2023-12-05 09:35:01 26 4
gpt4 key购买 nike

初始化列表的非变体版本效果很好:

std::map<int, double> a = {{1,0.1}};

但变体版本没有:

std::variant<std::map<int, double>, int> b = {{1,0.1}};

有没有办法使用初始化列表来初始化 b ?如果不是,初始化它的最佳方法是什么?

最佳答案

一种方法是更具体:

std::variant<std::map<int, double>, int> b = std::map<int, double>{{1,0.1}};

不理想,但编译器无法选择 std::variant 的正确重载来自 <brace-enclosed initializer list> 的构造函数.因为怎么相关 std::variant constructor定义:

template< class T >
constexpr variant( T&& t ) noexcept(/* see below */);

T&& t不可能匹配 <brace-enclosed initializer list> , 只有特定类型的值。

关于c++ - 如何使用初始化列表来初始化 std::variant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66165216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com