User-defined literalsを調べてみた
C++11以前
// 単位があいまい height = 3.4; // メートルか?センチメートルか?
// 異なる単位の計算(3.4cm * 2.1mmの場合) ratio = (3.4 * 10) / 2.1;
C++11以降
#include <iostream> constexpr long double operator"" _mm(long double mm) { return mm; } constexpr long double operator"" _cm(long double cm) { return cm * 10.0_mm;} constexpr long double operator"" _m(long double m) { return m * 100.0_cm;} int main() { long double height = 3.4_cm + 0.5_mm; std::cout << height << std::endl; return 0; }
34.5
このように、自分が定義したサフィックスを使用できます
異なる単位の計算も問題なし~
と思いつつ、
long double height = 3.4_cm; std::cout << height << "cm" << std::endl;
34cm
みたいな落とし穴もあるような、ないような?