Boost logo

Boost :

From: Jarrad Waterloo (jwaterloo_at_[hidden])
Date: 2007-07-13 10:44:29


Thanks, I saw this a long time ago at codeproject also. Is there any real
hope in the future that boost::any will take advantage of this
implementation?

This is related to my original question. While using hold_any, I run into
this problem when trying to use BOOST_SPIRIT_DEBUG with a vector of
hold_any.

binary '>>' : no operator found which takes a right-hand operand of type
'std::vector<_Ty>' (or there is no acceptable conversion)
1> with
1> [
1> _Ty=boost::spirit::hold_any
1> ]

The code I added was as follows

std::istream& operator>> (std::istream& i, vector<hold_any>& obj)
{
    return i;//obj.table->stream_in(i, &obj.object);
}

std::ostream& operator<< (std::ostream& o, vector<hold_any> const& obj)
{
        o << "[";
        for(size_t i = 0; i < obj.size(); i++)
        {
                if(i > 0)
                        o << ",";
                o << obj[i];
        }
        o << "]";
    return o;
}

-----Original Message-----
From: spirit-general-bounces_at_[hidden]
[mailto:spirit-general-bounces_at_[hidden]] On Behalf Of Hartmut
Kaiser
Sent: Friday, July 13, 2007 10:01 AM
To: 'Spirit General Mailing List'
Subject: Re: [Spirit-general] Spirit Questions

Joel de Guzman wrote:

> > *Question #3 of 3: How do I debug using '#define
> BOOST_SPIRIT_DEBUG'
> > when using closures with a member of any?*
> >
> > Any needs stream operators which it doesn't have. I know
> this may be
> > an idiot question but I am asking it anyway because I tried the
> > following 2 and could get neither to work. Any assistance
> would be appreciated.
>
> Well, this is outside the scope of Spirit. I think the proper
> forum in this case is, back to the boost list -- just for
> this particular case. If I were you, I'd use a boost.variant
> instead and use its visitation mechanism to print its
> contents. There's really no fool proof way to print a boost
> any's contents.

FWIW, Spirit2 contains a hold_any class which is:

A) faster than Boost.Any,
B) supports input/output streaming as long as the elements stored in the
hold_any do support streaming as well,
C) is otherwise 100% compatible to Boost.Any.

Regards Hartmut

(BTW, it's here: http://tinyurl.com/242kyt)

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Spirit-general mailing list
Spirit-general_at_[hidden]
https://lists.sourceforge.net/lists/listinfo/spirit-general


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk