nothrow by default

Dennis dkorpel at
Sat Jan 4 21:22:22 UTC 2020

On Saturday, 4 January 2020 at 21:07:03 UTC, Adam D. Ruppe wrote:
> lol we could always use existing keywords like crazy:
> pure!false
> @nogc!true
> nothrow!default
> virtual!false
> or something similar.
> gotta love the double negatives but meh. throw already being a 
> keyword is convenient. pure is already positive so convenient. 
> just @nogc, the odd one out.

So do you allow `nothrow!false` as well? Or:
- nothrow!(false)
- nothrow!0
- nothrow!(0 || false)
- throw!false
- throw!true

Also, which one gets put in the tuple when calling:

__traits(getFunctionAttributes, func);

Currently "@system", "@trusted" or "@safe" is always there, while 
"nothrow", "pure" and "@nogc" are either there or not. What is 
the canonical way to check that a function does not have the 
"nothrow" attribute? When there's multiple options, it's bound to 
be confusing.

It might be bikeshedding over the real issue (which is that it is 
still impossible to negate these attributes at all), but 
considering attribute soup is already a common complaint, I don't 
want it to become worse.

More information about the Digitalmars-d mailing list