[Issue 23468] New: [betterC] Cannot use std.array.join and std.algorithm.map at compile-time
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Nov 6 22:53:35 UTC 2022
https://issues.dlang.org/show_bug.cgi?id=23468
Issue ID: 23468
Summary: [betterC] Cannot use std.array.join and
std.algorithm.map at compile-time
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: moconnor at tutanota.com
It looks like certain aspects of CTFE are disabled when building with -betterC.
I assume this is a bug?
```
struct Vector2 {
int x, y;
}
extern(C) void main() {
import std.algorithm : map;
import std.range : join;
import std.traits : FieldNameTuple;
enum fragment = [FieldNameTuple!Vector2].map!(field => "0.").join(",");
Vector2 zero = mixin("Vector2(" ~ fragment ~ ")");
}
```
When compiled with `dmd -betterC betterc.exe .\betterc.d`, I get:
```
.\betterc.d(9): Error: none of the overloads of template `std.array.join` are
callable using argument types `!()(MapResult!(__lambda1, string[]), string)`
dmd\current\windows\bin64\..\..\src\phobos\std\array.d(2125): Candidates
are: `join(RoR, R)(RoR ror, R sep)`
with `RoR = MapResult!(__lambda1, string[]),
R = string`
must satisfy the following constraint:
` isInputRange!(Unqual!(ElementType!RoR))`
dmd\current\windows\bin64\..\..\src\phobos\std\array.d(2228):
`join(RoR, E)(RoR ror, scope E sep)`
with `RoR = MapResult!(__lambda1, string[]),
E = string`
must satisfy the following constraint:
` isInputRange!(Unqual!(ElementType!RoR))`
dmd\current\windows\bin64\..\..\src\phobos\std\array.d(2321):
`join(RoR)(RoR ror)`
```
--
More information about the Digitalmars-d-bugs
mailing list