https://issues.dlang.org/show_bug.cgi?id=17486
--- Comment #4 from Eyal <e...@weka.io> --- The solution, clearly is to treat "lazy" is mere syntactic sugar to passing delegates - thus adding syntactic support for @nogc/etc attribute annotation on "lazy" parameters - and specifying their attributes just like is done for delegates. The assumption that lazy parameters are all pure is wrong (thus this ticket). The assumption that lazy parameters are all gc/throw is wrong (thus the other ticket). It *cannot* be inferred unless lazy parameters make everything a template, which would be unfortunate. Just like delegate parameter attributes cannot be inferred - you have to manually specify them or templatize over the delegate type. --