Don wrote:
Lars T. Kyllingstad wrote:
Currently, there doesn't seem to be any clear definition of which attributes should be prefixed with @ and which shouldn't.

[snip]

Solution (?):
I therefore propose the following definition of @-namespace attributes:

    The @-attributes of a function only place compile-time
    constraints on the body of that function.

Specifically, this means that the @-attributes of a function do not place constraints on calling code, change the syntax of calling code, nor change the visibility of the function.

The above definition means that the following will be @-attributes:

    @safe, @trusted, @unsafe
    @nothrow, @pure

@unsafe places constraints on calling code: it can't be @safe.

I considered that, but I think of it the other way around: It's @safe that places the "can't call @unsafe" constraint, and not @unsafe that places a "can't be called by @safe" constraint.

But I agree there's a fair bit of arbitrariness in this as well. :)

-Lars

Reply via email to