Boost logo

Boost :

Subject: Re: [boost] property tree find no match for 'operator=='
From: Ivan Le Lann (ivan.lelann_at_[hidden])
Date: 2011-09-30 15:17:03


----- "Bernd Prager" <bernd_at_[hidden]> a écrit :

> All,
>
> This is likely to be a silly question.
> I am trying to check for the existence of a value in a property tree.
>
> Reading the docs I assumed the easiest way would be:
>
> namespace pt = boost::property_tree;
> static pt::ptree pt;
>
> bool has(const std::string key) {
> if (pt.find(key) == pt.end()) return false; // (1)
> return true;
> }
>
> The compiler complains about "error: no match for 'operator=='" in
> line
> (1) though.
> What am I missing?
>

For your problem, the two iterators are not of the same type.
Don't know the exact reason, but I know that ptree uses multi_index.
Might be related.

Anyway :
- you have a get_optional() method.
- you can try replacing end() with not_found()

Regards,
Ivan


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