On Friday, 8 December 2017 at 11:48:26 UTC, Nicholas Wilson wrote:
On Friday, 8 December 2017 at 10:46:20 UTC, John Colvin wrote:
On Thursday, 7 December 2017 at 01:21:11 UTC, Nicholas Wilson
wrote:
[...]
How would such a thing interact with __traits(compiles, ...)
and is-expressions?
VERY good question, I'm not sure.
From a purely practical perspective I'd say it should pass
__traits(compiles, ...) and is-expressions purely because the
kind of things that @ctfeonly would be used to cull from the
produced binaries are used as is-expressions (e.g. the template
lambda that determines isInputRange), although I expect it use
to be rare. Ultimately I think this this feature would fall in
to the category of "use responsibly" and it would be the
responsibility of the user. They could always reflect on the
presence of the attribute if need be.
From a point of consistency, probably however semantic
constraints on things like LDC's magic attributes are done. I'm
not sure how that is handled, but I suspect that
__traits(compiles,...) does not take it into account. Johan?
I will think more on it.
Thanks.
You might want to wait until Dconf 2018 before you start
implementing something.
As it happens I am working on a way which will make ctfe-only
functions possible (though that's s side-effect rather then the
goal)