www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - There is anything like nodiscard attribute in D?

reply victoroak <anyone any.com> writes:
I have an Expected/Result struct, but without an attribute 
similar to nodiscard 
(https://en.cppreference.com/w/cpp/language/attributes/nodiscard) 
is not very useful.

There is anything like that in D? If not, there is any plan to 
add it?
Jul 29 2019
parent Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
On Monday, July 29, 2019 8:23:43 AM MDT victoroak via Digitalmars-d-learn 
wrote:
 I have an Expected/Result struct, but without an attribute
 similar to nodiscard
 (https://en.cppreference.com/w/cpp/language/attributes/nodiscard)
 is not very useful.

 There is anything like that in D? If not, there is any plan to
 add it?
No, D does not currently have a feature like that, and there are not currently any plans to add such a feature. If someone writes a DIP (D Improvement Proposal) for such a feature and provides good enough arguments for why it's worth adding that the DIP ends up being accepted, then such a feature would be added, but AFAIK, no one has written such a proposal. The closest that D has to such a feature is that if a function is pure, then IIRC in at lesat some cases, the compiler will warn if the return value is ignored, because there isn't normally any point to a pure function if you ignore everything that it does, but that probably requires that the function be "strongly" pure (meaning that all of its parameters are immutable or implicitly convertible to immutable), since if it's possible for any effects to escape via the function arguments (e.g. because they're pointers or ref), then ignoring the return value isn't necessarily a problem. However, that's the only time that D complains about a function's return value being ignored. - Jonathan M Davis
Jul 29 2019