On Tuesday, 15 July 2014 at 17:50:13 UTC, Johannes Pfau wrote:
Then we have a templated struct. Which generates TypeInfo for
every
instance. Which might generate an Initializer for every
instance and
it might generate extended debug info for every instance.
These are exactly the kind of workarounds I don't want. Sure we
can
make it work: @noTypeInfo @noInit @noDebug (struct volatile).
But then
I don't see why we don't just use the proposal in this DIP.
It's less
complicated, has got fewer corner case, ...
And that's why I say first class support: We don't have
shared!(T) we
have shared T. And volatile should get it's own qualifier as
well.
Also some things will just not work with Volatile!T, for example
volatile/nonvolatile member function overloading.
Functions can take Volatile!T, of course, and you can always have
"set/volatileSet". You might even be able to use opDispatch to
make it less DRY.