input range with non copyable element

Mathias LANG geod24 at gmail.com
Mon Aug 9 02:47:40 UTC 2021


On Sunday, 8 August 2021 at 18:36:02 UTC, vit wrote:
> Hello, is there reason why elements of input range must be 
> copyable?

By design, not that I can think of. But it is assumed all over 
the place, unfortunately. You can make your `front` method return 
by `ref`, but you're still going to get bitten as soon as you do 
any `std.algorithm`-based operation, as storage classes are not 
inferred (https://issues.dlang.org/show_bug.cgi?id=9423) and 
things get passed by value to your delegates by default. The 
problem can also show up when you `foreach` over a range 
(https://issues.dlang.org/show_bug.cgi?id=15413). And finally, 
`std.algorithm` need to support it.

So currently you'll have to jump through a lot of hops to get it 
to work. It'll be much easier to use your own `map` & co to get 
the job done for the time being. Hopefully at some point in the 
near future that won't be needed anymore.


More information about the Digitalmars-d-learn mailing list