gpt4 book ai didi

c++ - 为什么这个 boost::variant 示例不起作用?

转载 作者:太空狗 更新时间:2023-10-29 23:42:56 25 4
gpt4 key购买 nike

我开始了解 boost::variant。我认为这个例子应该可行。

#include <boost/fusion/sequence.hpp>
#include <boost/fusion/include/sequence.hpp>

#include <boost/variant/variant.hpp>
#include <string>
#include <vector>
#include <iostream>
#include <boost/variant/get.hpp>
boost::variant< bool,long,double,std::string,
std::vector<boost::variant<bool> > > v4;
void main()
{

std::vector<boost::variant<bool> > av (1);
v4= av;
try
{
bool b=
boost::get<bool> (v4[0]); // <--- this is line 20
std::cout << b;


}
catch (boost::bad_get v)
{
std::cout << "bad get" <<std::endl;
}
}

我得到一个编译错误:

d:\m\upp\boosttest\main.cpp(20) : error C2676: binary '[' : 'boost::variant' do 没有定义此运算符或转换为预定义运算符可接受的类型 和 [ T0_= bool 值, T1=长, T2=双, T3=标准::字符串, T4=std::vector > ]

最佳答案

v4[0]无效,因为 v4 是变体,而不是 vector 。您需要使用 boost::get首先检索存储在其中的 vector 。所以,第20行应该是

boost::get<bool>(boost::get<std::vector<boost::variant<bool> > >(v4)[0]);

关于c++ - 为什么这个 boost::variant 示例不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662740/

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