On 15 July 2014 19:38, Meta via Digitalmars-d <digitalmars-d@puremagic.com> wrote: > On Tuesday, 15 July 2014 at 18:30:11 UTC, Johannes Pfau wrote: >> >> No, this doesn't work with Volatile!: >> >> struct A >> { >> private int _val; >> int read(){ return val+val }; >> int read(bool volatile)() { auto tmp = val; return tmp*tmp; }; >> } > > > struct A > { > private int _val; > int read(bool volatile)() > { > static if (volatile) > { > > auto tmp = val; return tmp*tmp; > } > else > { > return val+val; > } > }; > } > > And you are no worse off than before. This template can only generate 2 > possible functions, and the instantiations are also cached so as far as I > know, there's no code bloat. >
Worse, there's no code because the compiler optimises everything away!