On Wednesday, 5 August 2020 at 09:25:23 UTC, Simen Kjærås wrote:
On Wednesday, 5 August 2020 at 09:05:36 UTC, Flade wrote:
I have used an if-else statement to create an alias to avoid code duplication but it doesn't let me access it outside the if statement. Is there a way to solve this?

You're probably looking for static if:

    static if (useAlias) {
        alias myAlias = getAlias!();
    }

    myAlias foo = getFoo();


What happens is a regular if statement introduces a scope, so anything declared inside it is unavailable outside. static if does not introduce a new scope, and so its contents can be accessed.

static if only works with compile-time constant conditions, but aliases are also compile-time constructs, so this should not pose a problem.

--
  Simen

Thanks! You see it should work but the thing is. I'm using it inside a function. I'm checking for one of the function's parameter (if parameter == false) and it says that "the variable `parameter` cannot be read at compile time. Do you know if there is a way to fix this?

Reply via email to