Chris Nicholson-Sauls wrote:
Andrei Alexandrescu wrote:
[snip]
Well, I guess. In particular, to me it's not clear what type we should
assign to a concatenation between a string and a wstring. With ~=,
it's much easier...
My intuition would be to expect the same as adding an int to a byte: you
get an int. Concatenating a string and a wstring should yield a wstring;
ie, encode to the wider of the two types.
-- Chris Nicholson-Sauls
Yah, I agree. The problem is, there's a big difference too: all
encodings are able to represent the same information, unlike numeric
widths where there's a clear inclusion relationship. It could even be
argued that in pure theory UTF-16 is the least general of the three (I
dislike UTF-16 from an engineering standpoint; unlike UTF-8 which I
think is brilliant, I find UTF-16 is forced and uninspired - the typical
outcome of a committee.)
My current thought is to ascribe lhs ~ rhs the same type as lhs (thereby
making ~ consistent with ~= by making lhs ~= rhs same as lhs = lhs ~
rhs) in case lhs is a string type. If lhs is a character type, the
result type is obviously the same as rhs.
Andrei