On Tuesday, 28 December 2021 at 22:06:50 UTC, Steven Schveighoffer wrote:
On 12/28/21 4:19 PM, rempas wrote:

Here:

```
extern (C) void main() {
   void print_num(int mul)(int num) {
     static if (is(mul == ten)) {
       printf("%d\n", num * 10);
     } else static if (is(mul == three)) {
       printf("%d\n", num * 3);
     } else {
       printf("%d\n", num);
     }
   }

   int multi = 211;
   print_num!3(10);     // Ok, accept this
   print_num!multi(10); // Error, do not accept this
}
```

-Steve

Thanks! That's cool but I don't want this to be this way. Or at least I want it to be able to take a default value so we don't have to get passed all the time. So something like this:

```
extern (C) void main() {
  void print_num(int num, comp_time_type int mul = 100) {
    static if (is(mul == ten)) {
      printf("%d\n", num * 10);
    } else static if (is(mul == three)) {
      printf("%d\n", num * 3);
    } else {
      printf("%d\n", num);
    }
  }

  int multi = 211;
  print_num(10, 3);     // Set the value
print_num(30); // Get the default value, have the "else" branch executed
}
```

Is this possible?

Reply via email to