https://issues.dlang.org/show_bug.cgi?id=13348
--- Comment #4 from hst...@quickfur.ath.cx --- It's not a problem that byGrapheme is sometimes impure, but it should not be the one introducing the impurity. I.e., if the incoming range is pure, then byGrapheme ought to be also pure. This can be enforced by not attributing byGrapheme directly, but using a pure nothrow etc. unittest to ensure any impure/throwing/etc. code actually comes from the incoming range, not from byGrapheme itself. --