On Tuesday, 1 April 2025 at 09:21:25 UTC, Daniel Donnelly, Jr. wrote:
Something like this. I know I could very well hash latex member, but what if the user redefines toString() ? So I would like to call toString(), but DMD compiler bitches:

```
Error: @safe function def.Def.toHash cannot call @system function def.Def.toString: def.Def.toString is declared here...
```

This works for me:

```d
   @safe nothrow override string toString() const
   {
      return latex;
   }

   override nothrow @safe size_t toHash()
   {
      auto s = toString();
      return hashOf(s);
   }
```

Changes made:

* Mark `toString` as `@safe` and `nothrow`.
* Use [`hashOf`][1] instead of `getHash`.

[1]: https://dlang.org/phobos/object.html#.hashOf

Reply via email to