@safe(bool)

bitwise via Digitalmars-d digitalmars-d at puremagic.com
Sat Aug 19 12:15:25 PDT 2017


On Saturday, 19 August 2017 at 18:22:58 UTC, Guillaume Boucher 
wrote:
> On Thursday, 17 August 2017 at 16:32:20 UTC, bitwise wrote:
>> In a high-performance context though, the performance hit may 
>> be unacceptable.
>
> Well in those super rare situations, there's always the 
> workaround with mixins:

Those situations are not rare.

> mixin template funcWithAttr(string decl, string attributes, 
> string code) {
>     pragma(msg, "<<<" ~ code ~ ">>>");
>     mixin(decl ~ attributes ~ "{" ~ code ~" }");
> }
>
> struct Container(T, bool safetyOn = true)
> {
> 	static if(safe)
> 		RefCounted!(T[]) data;
> 	else
> 		T[] data;
>
> 	mixin funcWithAttr!("auto opSlice()", safetyOn ? "@safe" : "", 
> q{
> 		return Range(data, 0, data.length);
> 	});
> }

Really?



More information about the Digitalmars-d mailing list