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来执行任何分支。我想知道的是。非常感谢。:)