On Monday, 30 May 2016 at 12:59:08 UTC, Adam D. Ruppe wrote:
On Monday, 30 May 2016 at 12:45:27 UTC, Andrei Alexandrescu
wrote:
That's... what I said. -- Andrei
You said "not arrays", he said "not ranges".
So that just means making the std.range.primitives.popFront and
front add a constraint if(!isSomeString()).
Language built-ins still work, but the library rejects them.
Indeed, we could add a deprecated overload then that points
people to the other range getter methods (byCodeUnit,
byCodePoint, byGrapheme, etc.)... this might be our migration
path.
That's a great idea - the compiler should also issue deprecation
warnings when I try to do things like:
string a = "你好";
a[1]; // deprecation: direct access to a Unicode string is highly
error-prone. Please specify the type of access. More details
(shortlink)
a[1] = "b"; // deprecation: direct index assignment to a Unicode
string is ...
a.length; // deprecation: a Unicode string has multiple
definitions of length. Please specify your iteration (...). More
details (shortlink)
...
Btw should a[] be an alias for `byCodeUnit` or also trigger a
warning?