November 03 [Issue 24842] New: No ability to overload unary logial not operator | ||||
|---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=24842 Issue ID: 24842 Summary: No ability to overload unary logial not operator Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: info@lapyst.by Dlang has wide range support for overloading nearly all operators the language supports. However, I'm missing support for the unary logical not operator. Usecases are implementation of (feature-)flags, or my current use-case, notation of if an certain format is allowed or not for serialization / processing. Essentially all datastuctures that are logically negateable would benefit of the ability to overload the logical not operator. Example: ```d struct FormatId { string id; bool allowed = true; this(string id) { this.id = id; } private this(string id, bool allowed) { this.id = id; this.allowed = allowed; } auto opUnary(string op)() if (op == "!") { return FormatId(this.id, !this.allowed); } } unittest { auto f1 = FormatId("test"); assert(f1.allowed == true); auto f2 = !f1; assert(f1.allowed == true); assert(f2.allowed == false); } ``` -- | ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply