首页 > 解决方案 > 函数参数为 __builtin_constant_p?

问题描述

是否可以有一个函数参数是 __builtin_constant_p?

这个宏工作正常:

#define FOO(a) {\
    static_assert(__builtin_constant_p(a));\
}

void bar() {
    FOO("abc");
}

我想FOO变成一个函数。但是,这不起作用:

void foo(const char* a) { // how to change argument to make this work?
    static_assert(__builtin_constant_p(a)); // Fails with: Static_assert failed due to requirement '__builtin_constant_p(a)
}

void bar() {
    foo("abc");
}

我怎样才能改变它的论点foo使它起作用?可能使用模板 / std::forward 或类似的东西?

标签: c++c++11macrosmoveforward

解决方案


推荐阅读