On Wednesday, 24 March 2021 at 08:51:34 UTC, Per Nordlöw wrote:
On Wednesday, 24 March 2021 at 08:31:19 UTC, Basile B. wrote:
There are several ways to do that. In addition to onOutOfMemoryError, you can use a static instance

  void v() @nogc nothrow
  {
    __gshared oom = new OutOfMemoryError();
    auto X* = X_create();
    if (X is null)
        throw oom;
  }

How is that better than

    void v() @nogc nothrow
    {
        auto X* = X_create();
        if (X is null)
            onOutOfMemoryError();
    }

considering the fact that accessing `__gshared` state is neither `@safe` nor `pure`? Which, in turn, makes `v()` unconditionally unsafe and unpure regardless of safety and purity of `X_create()`.

In now way. But in your question you mentioned @nogc nothrow and not @safe and pure.

Reply via email to