如何在 C/C++ 中访问大小写表达式中的事例值
How to access the case value withing the case expression in 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 个函数之一。
有什么方法可以将模板化函数调用中的 <1> 替换为 case 语句中的值,例如
case n: call_template_function_x<case_value_for_n>();break;
不,
除非您为从 0 到某个值的最大值的所有值编写大小写,否则无法替换值。这是因为call_template_function_x<3>()
在编译时是已知的,因此编译器知道要在 exe 中生成什么代码。因此,编译器将无法使用运行时值来生成代码。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 使用正则表达式regex_search在字符串中查找字符串
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 概念中的cv限定符需要表达式参数列表
- 为什么constexpr的性能比正常表达式差
- 对于结构,表达式必须是可修改的ivalue
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 将fold表达式与std::一起用于两个元组
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 标记 '","' 之前的预期主表达式
- 如何提升Perl正则表达式匹配,支持区分大小写/不区分大小写
- 有条件地忽略 c++11 正则表达式中的大小写
- 开关大小写错误 |的值在常量表达式中不可用
- C++能做一些类似ML大小写表达式的事情吗
- 如何在 C/C++ 中访问大小写表达式中的事例值
- 大小写表达式不是常量
- c++切换正则表达式大小写