Flatten a range of static arrays
Steven Schveighoffer
schveiguy at gmail.com
Sat Feb 8 00:14:41 UTC 2020
On 2/7/20 6:10 PM, nullptr wrote:
> ```
> import std;
>
> struct SomeRange
> {
> int[3] val;
>
> enum empty = false;
>
> auto popFront() @safe {}
>
> ref auto front() @safe
> {
> return val;
> }
> }
>
> void main() @safe
> {
> SomeRange().take(10).map!((return ref x) => x[]).joiner.writeln;
> }
> ```
>
> I don't know how applicable this is to your use case, but this code will
> compile and run under -dip1000.
I tried the AST button. for the front function I got:
return pure nothrow @nogc ref @safe int[3] front() return
Note the duplicate return attributes. When I type that in, it doesn't
compile, the return at the front is invalid.
When I remove that return, I get a safety error. So something is weird
about how the attributes are inferred. Either there is some magic
attribute not being printed, or an attribute that can't be specified
manually, or it's a bug.
-Steve
More information about the Digitalmars-d-learn
mailing list