[Issue 20091] New: nogc callback inferred as non-nogc
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Jul 29 22:32:23 UTC 2019
https://issues.dlang.org/show_bug.cgi?id=20091
Issue ID: 20091
Summary: nogc callback inferred as non-nogc
Product: D
Version: D2
Hardware: x86
OS: Mac OS X
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: ali.akhtarzada at gmail.com
import std;
struct W(T) {
T value;
auto hook(handlers...)() {
return handlers[0](value);
}
}
template f(handlers...) {
auto ref f(T)(auto ref T value) {
return value.hook!handlers;
}
}
@nogc void main() {
auto a = W!int(3);
auto b = a.f!((_) => "yes");
}
Produces: Error: @nogc function D main cannot call non- at nogc function
onlineapp.main.f!(W!int).f
Adding @nogc on function f says hook!((_) => "yes").hook closes over variable
__this310
If you explicitly specify a type on the lambda that you pass to f then it
compiles:
auto b = a.f!((int) => "yes");
--
More information about the Digitalmars-d-bugs
mailing list