User-defined literalsを調べてみた

C++11以前
// 単位があいまい
height = 3.4; // メートルか?センチメートルか?
// 異なる単位の計算(3.4cm * 2.1mmの場合)
ratio = (3.4 * 10) / 2.1;

より明確定義できるように
C++11以降、リテラルにカスタムサフィックスを追加する機能を提供されています

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

みたいな落とし穴もあるような、ないような?