main.d(61): Error: temp_[i_] isn't mutable

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Jun 20 12:14:12 PDT 2010


On 06/20/2010 12:56 PM, Ali Çehreli wrote:
> Ben Hanson wrote:
>> == Quote from Justin Spahr-Summers (Justin.SpahrSummers at gmail.com)'s
>>> "string" is actually an alias for "immutable(char)[]" (and
>> similarly for
>>> the other string types), so its contents are not modifiable, though
>> its
>>> length can be adjusted and contents appended. If you need to be
>> able to
>>> modify the characters, just use char[] instead. You can then use the
>>> .idup property to get a string afterward.
>>
>> I'm converted temp_ to CharT[] as suggested, but the conversion back
>> to a string is failing:
>>
>> _charset = temp_.idup;
>>
>> main.d(76): Error: cannot implicitly convert expression (_adDupT((&
>> D58TypeInfo_AT4main14__T5regexTAyaZ18basic_string_token5CharT6__initZ),cast
>>
>> (string)temp_)) of type immutable(CharT)[] to string
>
>
> Would it work for you if the regex template took the character type
> instead of the string type?
>
> The relevant lines:
>
> template regex(CharT)
> {
> // ...
> alias CharT[] StringT;
> StringT _charset;
> enum size_t MAX_CHARS = CharT.max + 1;
> // ...
> _charset = squeeze(_charset.idup).dup;
>
> And then, in main:
>
> regex!(char).basic_string_token token_;
>
> Ali

IMHO it's more general if the regexp took the string type as a 
parameter. This is because later that is easier generalizable to 
accepting a range that's different from an array.

My dream: to have a compile-time-generated regex engine that can operate 
on any input stream.


Andrei


More information about the Digitalmars-d mailing list