[Issue 13881] New: Optional length template argument for std.range.takeExactly
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sat Dec 20 05:57:26 PST 2014
https://issues.dlang.org/show_bug.cgi?id=13881
Issue ID: 13881
Summary: Optional length template argument for
std.range.takeExactly
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: enhancement
Priority: P1
Component: Phobos
Assignee: nobody at puremagic.com
Reporter: bearophile_hugs at eml.cc
In some cases it can be useful to specify the length as template argument to
takeExactly, allowing the range to have a length known at compile-time:
void main() pure @safe nothrow @nogc {
import std.range: takeExactly;
int[10] arr;
auto r = arr.takeExactly!5;
enum len = r.length;
}
If the first argument of takeExactly is a fixed-size array of sufficient
length, or a range that has length known at compile-time (like another
takeExactly!N or an infinite range), then takeExactly becomes nothrow @nogc.
Now r.length is usable in various compile-time contexts:
int[r.length] arr2 = void;
copy(r, arr2[]);
If you can't add such optional template argument, then you can add a similar
function named std.range.takeExactlyCt.
See also Issue 13880
--
More information about the Digitalmars-d-bugs
mailing list