Boost logo

Boost :

Subject: Re: [boost] [any] Equality
From: Antony Polukhin (antoshkka_at_[hidden])
Date: 2014-01-15 05:05:41


2014/1/14 Bjorn Reese <breese_at_[hidden]>

> On 01/14/2014 12:42 PM, Bjorn Reese wrote:
>
>> I noticed that boost::any does not have an operator== for comparing two
>> boost::any objects. Is this a deliberate choice?
>>
>> Currently I have to (1) compare the types, and (2) convert the values
>> with any_cast (and probably catch bad_any_cast exceptions) and compare
>> them.
>>
>
> And which type do I use for any_cast?

Short answer to your problems: use Boost.TypeErasure library. It'll help
you to make your own boost::any with blackjack and comparison operators.

Long answer to the issues with boost::any and operator==:
It is possible to add such operator, but that will require change of
internal structures and
* increase requirements for all stored type (they all must be comparable)
=> breaks existing user code
OR
* make runtime errors in cases when TypeErasure library give compile time
errors => making runtime errors from compile time is not a C++ way

-- 
Best regards,
Antony Polukhin

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