2 Stimmen

Warum funktioniert dieses boost::variant-Beispiel nicht?

Ich lerne gerade boost::variant kennen. Ich denke, dieses Beispiel sollte funktionieren.

#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; 
    }
}

Ich erhalte einen Kompilierungsfehler:

d: \m\upp\boosttest\main.cpp (20) : Fehler C2676: binary '[' : 'boost::variant' do es diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator akzeptablen Typ nicht definiert mit [ T0_=bool, T1=long, T2=double, T3=std::string, T4=std::vector> ]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X