c++ - 如何判断参数何时来自硬编码数字?

标签 c++ templates parameter-passing overloading

我希望能够判断传递给函数、方法或类方法的数字参数是否来自硬编码数字。

例如呼唤

MyFunc(2);

int a = 1;
MyFunc(a);

应该重载函数以允许不同的实现或某种区分方式

void MyFunc(int num)
{
  if (isHardcodedNumber(num))
    doThis();
  else
    doThat();
}

这是一个简化版本。理想情况下,我需要一个采用模板参数并适用于任何内置数字类型的解决方案。

这可能吗?

最佳答案

你无法区分这两种情况。

您的函数只是从堆栈(或寄存器,取决于您的处理器)中获取传递给它的值。

无法知道该值在被压入堆栈或复制到寄存器之前来自何处(当然,除非您传递一个额外的参数来指示所以)。

关于c++ - 如何判断参数何时来自硬编码数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206125/

相关文章:

C++未初始化的内存?

templates - 用于静态 Web 开发的简单模板系统

c++ - 在目标纹理上复制源纹理,其中源大于目标

c++ - 如何使用 indy 10.5.5 c++ 写入和读取 Stream

templates - 如何提供预渲染的数据可绑定(bind)模板

c++ - 将模板从类特化为整数

c++ - 将方法作为模板参数传递 C++11

html - 使用 html 和 ngHref 进行 Angular 翻译

bash - 将动态生成的参数传递给脚本内的命令

c++ - Visual C++ 2008 'Release' build 包含调试信息