Re: can't access an alias created inside an if statement

2020-08-05 Thread Flade via Digitalmars-d-learn

On Wednesday, 5 August 2020 at 09:39:47 UTC, Simen Kjærås wrote:

On Wednesday, 5 August 2020 at 09:32:58 UTC, Flade wrote:
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?


As the error message says, the value must be known at compile 
time. Most likely, you can simply pass it as a template 
parameter:


void fun(bool parameter)(int arg1, string arg2) {
static if (parameter) {
}
}

void main() {
fun!true(1, "foo");
fun!false(19, "bar");
}

--
  Simen


Thanks man! Works as expected! Have a great day!


Re: can't access an alias created inside an if statement

2020-08-05 Thread Simen Kjærås via Digitalmars-d-learn

On Wednesday, 5 August 2020 at 09:32:58 UTC, Flade wrote:
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?


As the error message says, the value must be known at compile 
time. Most likely, you can simply pass it as a template parameter:


void fun(bool parameter)(int arg1, string arg2) {
static if (parameter) {
}
}

void main() {
fun!true(1, "foo");
fun!false(19, "bar");
}

--
  Simen


Re: can't access an alias created inside an if statement

2020-08-05 Thread Flade via Digitalmars-d-learn

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?


Re: can't access an alias created inside an if statement

2020-08-05 Thread Simen Kjærås via Digitalmars-d-learn

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


can't access an alias created inside an if statement

2020-08-05 Thread Flade via Digitalmars-d-learn
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?