【发布时间】:2011-02-15 12:19:55
【问题描述】:
在C++ 标准库 中,值std::numeric_limits<T>::max() 被指定为函数。特定类型的其他属性以常量形式给出(如std::numeric_limits<T>::is_signed)。所有T 类型的常量都作为函数给出,而所有其他常量都作为常量值给出。
这背后的原理是什么?
【问题讨论】:
-
max 不是常数,可能随编译器标志而变化。
-
@Martin:我不明白这有多重要。当然,编译器标志可以控制常量的初始化方式。
-
@jalf:作为实现细节,您是正确的,函数与变量没有区别。但是通过使用函数,您暗示此信息不是恒定的并且是计算的(即使它是内部的 const 表达式)。我喜欢这种区别,因为信息就是力量。
标签: c++ constants numeric-limits