You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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-@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");
The text was updated successfully, but these errors were encountered:
Ali Ak reported this on 2019-07-29T22:32:23Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=20091
CC List
Description
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-@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");The text was updated successfully, but these errors were encountered: