当你有这样的代码时
switch(some_value)
{
case 1: call_template_function_x<1>();break;
case 2: call_template_function_x<2>();break;
case 3: call_template_function_x<3>();break;
// etc
}
这里'some_value'仅在运行时知道,我使用开关将运行时值转换为N个函数之一,其中模板化常量作为输入。
我有什么方法可以替换&lt; 1&gt;在模板化函数中调用case语句中的值,类似于
case n: call_template_function_x<case_value_for_n>();break;
答案 0 :(得分:2)
不,除非您为从0到最大值的所有值写入大小写,否则无法替换值。这是因为call_template_function_x<3>()
在编译时是已知的,因此编译器知道在exe中生成什么代码。因此,编译器无法使用运行时值来生成代码。