Indicates if the member of a struct or class is accessible for compile time introspection.

The template has to be mixed in the scope where the other __traits() operations are performed. A simple function template that uses __traits(getProtection) does not faithfully represent the member accessibility if the function is declared in another module. Another problem is that __traits(getProtection) does not well represent the accessibility of the private members (own members or friend classes /structs).

mixin template ScopedReachability () {}