Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 在D中的模板化方法中使用局部变量的条件_Templates_D - Fatal编程技术网

Templates 在D中的模板化方法中使用局部变量的条件

Templates 在D中的模板化方法中使用局部变量的条件,templates,d,Templates,D,我不确定我是否使用了正确的术语,但我正在尝试这样做: struct test_t { int x; void test()() if(x == 10) { printf("X is ten!\n"); }; void test()() { printf("X is not ten!\n"); }; }; test_t test; test.x = 10; test.test(); // output: X is ten! 这样的事情可能吗? 我不会在实际代

我不确定我是否使用了正确的术语,但我正在尝试这样做:

struct test_t {
  int x;
  void test()() if(x == 10) {
    printf("X is ten!\n");
  };
  void test()() {
    printf("X is not ten!\n");
  };
};

test_t test;
test.x = 10;
test.test(); // output: X is ten!
这样的事情可能吗?
我不会在实际代码中使用它,我只是想知道该语言是否支持类似的东西。

您不能使用运行时值,因为模板都是在编译时计算出来的。不过,您可以使用编译时值执行此操作:

struct test_t(int x) {
   void test()() if(x == 10) {}
   // etc
}

test_t!(10) test;
test.test(); // X is ten
但请注意,此处使用的编译时变量:

  • 在定义类型a测试时设置!10与测试类型不同!二十
  • 不能改变
  • 可用于
    静态if
    、模板约束、静态数组大小或任何其他使用数字文字的地方

不过,正则变量需要在方法内部使用正则if来执行任何分支。

我想知道的是。非常感谢。:)