operator "~" does not check type?

Timon Gehr timon.gehr at gmx.ch
Sun Oct 16 15:24:26 PDT 2011


On 10/13/2011 01:46 PM, Steven Schveighoffer wrote:
> 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.

Actually uint afaik.

>
> 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.
>

Another argument for requiring an explicit cast is that not every int 
can be converted to a valid dchar.










More information about the Digitalmars-d-learn mailing list