This came to mind while working on a set of containers.
@safety often comes with a performance cost. For example, any container that wants to give out a range or iterator has to have a ref-counted or GC allocted payload to ensure safety. In a high-performance context though, the performance hit may be unacceptable.
It's fairly easy to make a container that toggles it's implementation between ref-counted, GC, or raw pointers/arrays, based on a template parameter. This would allow a single container to be used in both performance sensitive and safe contexts (in theory). The only problem would be the lack of actual @safe annotations on the container, as they would only be applicable to one variant, and otherwise cause a compile-time error.
One solution could be this: struct Container(T, bool safetyOn = true) { static if(safe) RefCounted!(T[]) data; else T[] data; auto opSlice() @safe(safetyOn) { return Range(data, 0, data.length); } } A similar solution could be applied to @nogc as well.