思考の流れに沿った別の選択肢は、名前空間(またはネストされた名前空間)を使用して定数を適切にグループ化することです。例は次のとおりです。
namespace constants {
namespace earth {
constexpr double G = 6.67408e-11;
constexpr double Mass_Earth = 5.972e24;
constexpr double GM = G*Mass_Earth;
}// constant properties about Earth
namespace fluid {
constexpr double density = 0.999; // g/cm^3
constexpr double dyn_viscosity = 1.6735; //mPa * s
}// constants about fluid at 2C
// ...
} // end namespace for constants
上記の手法を使用すると、参照定数を目的のファイルや名前空間にローカライズして、グローバル変数よりも制御しやすくなり、同様の利点を得ることができます。定数を使用すると、次のように簡単になります。
constexpr double G_times_2 = 2.0*constants::earth::G;
ネストされたネームスペースの長いチェーンが嫌いな場合は、ネームスペースエイリアスを使用して、必要なときにいつでも短縮できます。
namespace const_earth = constants::earth;
constexpr double G_times_2 = 2.0*const_earth::G;