operator "~" does not check type?

Steven Schveighoffer schveiguy at yahoo.com
Thu Oct 13 04:46:50 PDT 2011


On Thu, 13 Oct 2011 06:57:09 -0400, Cheng Wei <rivercheng at gmail.com> wrote:

> == Quote from Steven Schveighoffer (schveiguy at yahoo.com)'s article
>> On Wed, 12 Oct 2011 09:46:57 -0400, Trass3r <un at known.com> wrote:
>> >> I believe that the primary reasoning for allowing the implicit
>> >> conversion
>> >> between int and dchar is so that code like this
>> >>
>> >> dchar c = 'a' + 7;
>> >
>> > That's a '+' though, not a '~'.
>> Jonathan meant this better example ;)
>> string s = "hello";
>> s ~= 'a' + 7;
>
> It's still fine if '~' does not allow implicit casting but '+' does.
> 'a' + 7 -> 'h' which is already a dchar. So it can be appended to s
> without casting.

A + B where the types of A and B are integral goes through integer  
promotion rules, inherited from C.  Like them or not, they are very  
unlikely to change.  This means dchar + int promotes to int, not dchar.

I think requiring a cast to go from int to dchar would be fine.  It's not  
a very common operation, and it clearly causes novice issues.

-Steve


More information about the Digitalmars-d-learn mailing list