https://issues.dlang.org/show_bug.cgi?id=14478
--- Comment #7 from Jonathan M Davis <[email protected]> --- > Most containers in C++ only require movability, otherwise you couldn't have > containers of std::unique_ptr<T> Then that's a change with C++11. Regardless, while it might be nice to support non-copyable elements with ranges, I really don't think that it's worth it - particularly when isInputRange has always required copyability. We'd be forced to either create a separate set of basic range traits - e.g. isInputRangeWithNonCopyableElements - or add something like hasCopyableElements and change isInputRange to no longer require copyable elements, which would then mean that a large portion of the range-based code out there would be wrong, since a lot of it is going to be copying elements, and unless folks regularly test their range-based code with ranges with non-copyable elements, they're not likely to catch the bugs where they accidentally require it, and they could be in for some rude surprises later when someone tries to use non-copyable elements. We already have enough problems with code assuming forward ranges or assuming that ranges aren't full reference types, which cause all kinds of fun bugs - including in Phobos. --
