我正在寻找一种方法来模拟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++ ×1