Boost logo

Boost Users :

From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2008-04-03 07:31:44


Pavol Droba skrev:
>
> Thorsten Ottosen wrote:
>> Pavol Droba skrev:
>>> Hi,
>>>
>>> char* is not longer supported as a default range type by the range library.
>>> you can use const char* literals only.
>>>
>>> You can pass char* only if you convert it to a range using as_literal or as_array
>>> helpers, that are part of the range library.
>>>
>>> We have to change this since thare were ambiguieties in char* usage.
>>>
>>> Best regards,
>>> Pavol.
>>>
>>> L Pocaille wrote:
>>>> The following code was working in boost 1.34
>>>>
>>>> char smurf_name[512];
>>>> strcpy(smurf_name, "Schtroumpf");
>>>> bool samething= boost::iequals("Schtroumpf", smurf_name);
>>>> assert(samething);
>>>>
>>>> but it no longer works in 1.35.
>> Pavol,
>>
>> why don't you use as_literal() internally in the string library?
>> Would that not preserve the behavior?
>>
>
> Actualy I do. But it seems, that this way it works only with const-chars .

Oh? On every compiler?

Looking at the example I'me a bit surprised that this have ever worked
*unless smurf_name was passed by value to force a decay*. AFAICT, the
range returned by as_literal(smurf_name) will be very long because we
don't scan arrays, only pointers, for a null.

I remember some problems with this earlier. But I'm suprprised that our
regression of the string algorithms library would not have cought this.

-Thorsten


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net