June 28, 2010
Hello Jacob,

> On 2010-06-28 02:28, BCS wrote:
> 
>> One solution would be to have templates strip off const/immutable
>> from the top level of args.
>> 
[...]
>> This solution would match the proposal that popped up a while ago to
>> allow value assignment from const/immutable to mutable.
>> 
> I don't think I understand what you're showing here. How would I strip
> off the const/immutable with a template ?
> 

I was proposing a language change Sorry for any confusion. The idea is that unless the user ask for it explicitly, there is no particular reason to preserve const/immutable for the value portion (true value types and the first level of references/pointers) of arguments.

-- 
... <IXOYE><



June 28, 2010
On Mon, Jun 28, 2010 at 14:35, Steven Schveighoffer <schveiguy@yahoo.com>wrote:

> On Mon, 28 Jun 2010 08:14:12 -0400, Philippe Sigaud < philippe.sigaud@gmail.com> wrote:
>
>  On Mon, Jun 28, 2010 at 10:56, Jacob Carlborg <doob@me.com> wrote:
>>
>> Something to keep in mind: as of 2.04x (.045? maybe), the way UTF-8 /
>> UTF-32
>> is managed was changed. "asd" is an array of immutable(dchar), not
>> imutable(char). At least DMD tells me that its element type is 'dchar'.
>>
>
> No, that is not true.  It's still an array of immutable(char).  The
> compiler still sees it as an array of immutable(char).  However, std.range
> forces the element type of char[] and wchar[] to be bidirectional ranges of
> dchar.  The tests such as isRandomAccessRange and ElementType are fudged to
> say string is *not* a random access range, and its element type is dchar.
>  This was one of Andrei's changes because without such shoehorning,
> std.algorithm could possible start shearing off strings that weren't valid.
>


Ah yes, indeed, you're right.



> Whether that was the right decision remains to be seen.  I personally would rather have special ranges that do those things.  If I have a string that's always in English, why do I need to generate the dchars based on the characters in that array?
>
>
All that I can say is that it instantly broke dozens of unit tests in my projects, which were using strings a simple random-access ranges. It took me 2 DMD releases to work my way uout of it.

Maybe I should have a look at byCodeUnit or somesuch. But for clueless users like me, strings suddenly became much more complicated to use. Maybe I was using them in unsafe ways, I don't know. I just hope for a way to get my simple strings back.


June 28, 2010
On 2010-06-28 15:48, BCS wrote:
> Hello Jacob,
>
>> On 2010-06-28 02:28, BCS wrote:
>>
>>> One solution would be to have templates strip off const/immutable
>>> from the top level of args.
>>>
> [...]
>>> This solution would match the proposal that popped up a while ago to
>>> allow value assignment from const/immutable to mutable.
>>>
>> I don't think I understand what you're showing here. How would I strip
>> off the const/immutable with a template ?
>>
>
> I was proposing a language change Sorry for any confusion. The idea is
> that unless the user ask for it explicitly, there is no particular
> reason to preserve const/immutable for the value portion (true value
> types and the first level of references/pointers) of arguments.

Ok, now I understand.


-- 
/Jacob Carlborg
1 2
Next ›   Last »