是否有任何C ++ 11 constexpr
常量可以用来代替<cmath>
的常量宏,即常量如M_PI
和朋友?或者缺少那些在运行时提供这些常量的全局const
值?
答案 0 :(得分:5)
在C ++标准库中没有定义预定义的constexpr或全局常量常量。但您可以自己定义它们,例如:
namespace MathConstants {
const double E = 2.71828182845904523536;
const double LOG2E = 1.44269504088896340736;
const double LOG10E = 0.434294481903251827651;
const double LN2 = 0.693147180559945309417;
const double LN10 = 2.30258509299404568402;
const double PI = 3.14159265358979323846;
const double PI_2 = 1.57079632679489661923;
const double PI_4 = 0.785398163397448309616;
const double PI_1_PI = 0.318309886183790671538;
const double PI_2_PI = 0.636619772367581343076;
const double PI_2_SQRTPI = 1.12837916709551257390;
const double SQRT2 = 1.41421356237309504880;
const double SQRT1_2 = 0.707106781186547524401;
};
或者使用boost数学常量模板,一些文档here(尚未使用它)。