假设我有这样的东西:
namespace {
const unsigned MY_UINT = 100u;
const float MY_FLOAT = 0.f;
const char* MY_STRING = "Hello World";
}
通过使用 auto
是否可以获得预期的行为?我认为这是一种改进,但在实践中我不确定这一点。
namespace {
auto MY_UINT = 100u;
auto MY_FLOAT = 0.f;
auto MY_STRING = "Hello World";
}
这两个代码示例在语义上是否相同?这些会自动成为 const
吗?如果不是,我应该指定 auto const
吗?
最佳答案
auto
的推导规则等同于按值模板参数推导。按值创建对象需要从初始化程序中剥离引用和顶级 cv 限定符。你的两个例子是不等价的。特别是,原语 100u
是 unsigned int
类型,因此它被推断为。同样,0.f
是 float
类型。
只有当变量本身 不会被修改时,添加const
才有意义。如果您想在程序中创建常量,使用 constexpr
可能会更好。
关于c++ - 对全局常量使用 auto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897671/