如何在C / C ++中的case表达式中访问case值

时间:2013-11-11 15:22:15

标签: c++ c

当你有这样的代码时

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;

1 个答案:

答案 0 :(得分:2)

不,除非您为从0到最大值的所有值写入大小写,否则无法替换值。这是因为call_template_function_x<3>()在编译时是已知的,因此编译器知道在exe中生成什么代码。因此,编译器无法使用运行时值来生成代码。