Feedback Thread: DIP 1029--Add throw as Function Attribute--Final Review

Arine arine1283798123 at gmail.com
Tue May 5 15:03:41 UTC 2020


On Tuesday, 5 May 2020 at 14:47:55 UTC, Petar Kirov [ZombineDev] 
wrote:
> On Tuesday, 5 May 2020 at 14:39:24 UTC, Petar Kirov 
> [ZombineDev] wrote:
>> On Tuesday, 5 May 2020 at 08:55:58 UTC, Walter Bright wrote:
>>> On 4/17/2020 6:03 AM, Tove wrote:
>>>> I like it, but would prefer:
>>>> throw!bool
>>>> 
>>>> 1) makes meta-programming easier
>>>> 2) would allow deprecating nothrow (in very long term)
>>>> 3) there is precedence in C++ 'noexcept(expression)'
>>>> (even if they made the wrong choice with using the negated 
>>>> specifier)
>>>> 
>>>> Any arguments against?
>>>
>>> throw!bool implies it is throwing a bool. Besides, with 
>>> throw/nothrow we already have the full functionality.
>>
>> Are you saying that the following will work:
>>
>>     mixin(doThrow? "throw" : "nothrow")
>>     void func(bool doThrow)()
>>     {
>>     }
>>
>> ?
>>
>> Otherwise, I'd say that the best solution, which I think 
>> Andrei agreed with [1] is `attribute(true)` and 
>> `attribute(false)` or more generally: `attribute(boolExpr)`.
>>
>> [1]: https://forum.dlang.org/post/mknspb$1dgl$1@digitalmars.com
>
> An alternative proposal would be to merge the built-in function 
> attributes `pure`, `nothrow`, `@nogc` and 
> `@safe`/`@trusted`/`@system` with compiler-recognized UDAs in 
> the language, like [2], as proposed by multiple people:
>
> - https://forum.dlang.org/post/lo2avr$2hgo$1@digitalmars.com
> - 
> https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1012.md
>
> Honestly, I think this is the best way to go, and everything 
> else is a waste of time.
>
> [2]: 
> https://github.com/dlang/druntime/blob/master/src/core/attribute.d

That'd be worse I think. I don't want to have to look up what 
@spiffy means, especially if you can start mixing them. I prefer 
the idea of just having auto inferred functions, all of them. 
That way you don't have to wait for a function in a library to be 
properly tagged as @nogc when the author doesn't tag it as such 
(even though it is). Basically the same problem with @safe right 
now.


More information about the Digitalmars-d mailing list