__has_side_effects

Mark smarksc at gmail.com
Sun Apr 1 21:19:56 UTC 2018


On Saturday, 31 March 2018 at 20:44:13 UTC, Andrei Alexandrescu 
wrote:
> Yah, only strongly pure functions would qualify. Indeed that's 
> easy for the compiler to figure - so I'm thinking 
> pragma(isStronglyPure, expression) would be easy to define.
>
> What would be some good uses of this?
>
>
> Andrei

It can be used for some rudimentary compiler checks. Namely, in 
some contexts it doesn't make sense for an expression to have (or 
rather not have) any side effects:
- The increment section in a for loop must have a side effect, 
unless it's empty.
- An assert expression shouldn't have any side effects (because 
assertions disappear in release mode).

Maybe the compiler already does such checks, I don't know.

In general this seems far less useful than the concept of a pure 
function.


More information about the Digitalmars-d mailing list