如何在 C/C++ 中访问大小写表达式中的事例值

How to access the case value withing the case expression in C/C++

本文关键字:表达式 大小写 访问 C++      更新时间:2023-10-16

当你有一些这样的代码时

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 个函数之一。

有什么方法可以将模板化函数调用中的 <1> 替换为 case 语句中的值,例如

case n: call_template_function_x<case_value_for_n>();break;
不,

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