Boost logo

Boost :

From: Lorenzo Bettini (bettini_at_[hidden])
Date: 2005-08-17 03:32:44


John Maddock wrote:
>>now in 1.33 it is
>>
>>class regex_error : public std::runtime_error
>>{
>>public:
>> explicit regex_error(const std::string& s,
>>regex_constants::error_type err, std::ptrdiff_t pos);
>> explicit regex_error(boost::regex_constants::error_type err);
>> boost::regex_constants::error_type code()const;
>> std::ptrdiff_t position()const;
>>};
>>
>>typedef regex_error bad_pattern; // for backwards compatibility
>>typedef regex_error bad_expression; // for backwards compatibility
>>
>>so I was wondering if there's a way to make
>>
>>throw boost::bad_expression("internal error");
>>
>>compile on both versions of the library (this statement was reported not
>>to compile with 1.33 by a user of one of my programs)
>>
>>many thanks in advance
>
>
> I must admit I hadn't anticipated that folks would be throwing objects of
> that type (just catching them), the only fix is to change the constructor
> to:
>
> explicit regex_error(const std::string& s, regex_constants::error_type err
> = 0, std::ptrdiff_t pos = 0);

that's exactly what I had in mind

>
> Otherwise to change your code to add the extra parameters.
>

but my code should be compiled with both versions of the library (and
from what I see, in 1.31 only the string constructor is accepted),
that's the problem... so probably I should add a test to the configure
script and an #ifdef statement to throw the exact exception

> I'll add this to the list of things to fix.

thanks

Lorenzo


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