我正在尝试将现有的代码转换为constexpr,但是出现了以下错误信息:
错误:在“constexpr”函数中声明了“my_string”的“static”
简化后的代码如下:
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.";
}
};
字符串在其他地方当然会被使用,我想确保它们永远不会重复(因此是静态的),并且我希望通过使用BOOST_CONSTEXPR_OR_CONST来维护对C++03兼容性的支持,因为在C++03中并没有constexpr。
const char* my_string;
不够吗? - Jarod42std::cout <<
不是constexpr
。 - Jarod42