ユーザ定義リテラルの定数化

ユーザ定義リテラルをコンパイル時定数として扱う。


#include <iostream>
 
constexpr unsigned long long int operator""_km(unsigned long long int meter) {
    return meter * 1000;
}
 
int main() {
    const int distance = 1_km;
    std::cout << "distance:[" << distance << "]" << std::endl;

    return 0;
}

「constexpr」を付加することで、コンパイル時に評価されるようになる…はずだけど、「Visual Studio Community 2017」では、実行時評価みたい。

8行目にブレイクポイントを置いても、「distance」は評価済みの気配がない。