Can anyone point me to a part of the D spec that says what static means when applied to functions that are declared at module scope? (Other than module constructors, obviously)
I used to assume the property would do something, so I actually used it in a lot of my code when I was first learning D. Now someone I work with who’s newer to the language is now also going through this phase. The assumption of both me and them was that a static module-level function would more-or-less work like a function with pragma(inline, true), which makes more sense if you overlook how static usually applies to functions and you instead look at how static applies to almost everything else: variables (their initialisation is compile-time), if, foreach, and assert. However, I haven’t seen anything to suggest that static even does anything at all in this case; it also doesn’t give you a compiler error or even a warning, is it like this to make automatic code generation easier, or does it actually do something? Maybe D’s spec could be tweaked to make this a bit clearer? On quite a few occasions I’ve searched for info about this and found nothing relevant.
P.S. If it doesn’t actually do anything, I wonder if something like the behaviour of “static import” would be desirable?
Permalink
Reply