我试图让constexpr一些现有的代码,但得到的消息文字串宣布constexpr功能
错误静:“my_string”宣布“constexpr”静态'功能
大大简化,在代码:
template <typename T>
constexpr
int foo(const int x)
{
static // error: 'my_string' declared 'static' in 'constexpr' function
constexpr char my_string[] = "my foo error message!";
if (x == 0)
{
std::cout << my_string << std::endl;
}
return x;
}
class boo
{
public:
constexpr boo()
{
static // error: 'constructor_string' declared 'static' in 'constexpr' function
constexpr char constructor_string[] = "my constructor error message.";
}
};
中的字符串用在其他地方,当然,我想,以确保它们永远不会重复(所以静态)(我想保持兼容性使用静态的,其中C + +03,其中constexpr通过使用BOOST_CONSTEXPR_OR_CONST不可用)。
您是否需要使用数组而不是C字符串指针? 'const char * my_string'不够'? – Jarod42
顺便说一下,'std :: cout <<'不是'constexpr'。 – Jarod42
将变量放入函数外部的匿名名称空间中,并对其使用BOOST_CONSTEXPR_OR_CONST cv。 – kfsone