[Issue 23116] foreach with opApply infer ref when opApply delegate is templated
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon May 16 17:55:10 UTC 2022
https://issues.dlang.org/show_bug.cgi?id=23116
--- Comment #4 from Luís Ferreira <contact at lsferreira.net> ---
Doing fallback of the overload manually can be a workaround for this:
```
int opApply(Dg : int delegate(ref ubyte))(scope Dg dg)
{
enum attrs = functionAttributes!Dg;
alias nonRefDg = SetFunctionAttributes!(int delegate(ubyte),
functionLinkage!Dg, attrs);
foreach(ubyte i; &this.opApply!(nonRefDg)) // use the correct overload
if(auto ret = dg(i)) return ret;
return 0;
}
int opApply(Dg : int delegate(ubyte))(scope Dg dg)
{
// ...
}
```
--
More information about the Digitalmars-d-bugs
mailing list