【发布时间】:2016-06-06 08:01:36
【问题描述】:
我对这些说明符感到非常沮丧,因为我理解它们单独使用时的作用,但我发现它们一起使用时很难理解。例如,一些野外代码包含 -
namespace{
static constexpr char const *Hello[] = { "HelloString", "WorldString"};
...
}
这还能做什么?
- 当您已经在匿名命名空间中时,为什么还要使用静态。类中的静态是有意义的(除非您正在编写缺少名称空间的 C),没有类 - 为什么??
- 为什么要使用 constexpr - 这里没有理由使用它。一个简单的
const不会吗? - 然后
const *Hello对我来说没有意义。什么是不变的?字符串或指针*Hello?
最糟糕的是,它编译:/。当然它会编译,因为它们是有效的语句,但它甚至意味着什么?
【问题讨论】:
-
constexpr 表明它使用的是 C++11。再次了解这个静态是有意义的,因为它将使初始化线程安全。 (魔术静力学)。并且 constexpr 使它可以在不能与 const 一起使用的地方使用。
-
我不认为用花括号初始化列表编译标量。
-
为什么魔法静态和线程安全对于加载时间初始化很重要......?那里会发生什么样的并行执行?
-
如果您不介意,我已将问题编辑为看起来不太“在检查时可否决”的内容。不喜欢请回滚。
-
你确定它可以编译吗?我看到了一个文字列表。假设只有一个字符串,而不是一个列表,那么该行看起来就像是从一个类中复制的一行,在这种情况下它是有意义的。
标签: c++ c++11 static constants constexpr