相关疑难解决方法(0)

只接受文字整数的函数

我正在寻找一种方法来模拟C++中某些重载的GCC内置函数.内置插件与以下内容类似:

__builtin_foo(char *a, signed int b);
__builtin_foo(short *a, signed int b);
__builtin_foo(long *a, signed int b);
Run Code Online (Sandbox Code Playgroud)

在GCC中使用硬编码的特殊限制:b必须是文字值,即您可以调用:

__builtin_foo((char *)0, 1);
Run Code Online (Sandbox Code Playgroud)

但不是:

extern int val;
__builtin_foo((char *)0, val);
Run Code Online (Sandbox Code Playgroud)

这会产生编译器错误.我已经摆弄std::enable_if模拟这个,但无法找到一种方法来强制只接受文字参数.有没有办法做到这一点?

c++

22
推荐指数
3
解决办法
2407
查看次数

标签 统计

c++ ×1