can't access an alias created inside an if statement

Flade consolemaster0 at gmail.com
Wed Aug 5 09:32:58 UTC 2020


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?


More information about the Digitalmars-d-learn mailing list