Boost.Multiprecision を User-defined literals を使って初期化

こういう時こそ User-defined literals の出番!
ってことでやってみました。

[ソース]

#include <boost/multiprecision/cpp_int.hpp>
#include <string>


boost::multiprecision::cpp_int
operator "" _cpp_int(char const* str){
    return boost::multiprecision::cpp_int(str);
}


int
main(){
    // 文字列ではなくて数値をそのまま記述する事が出来る
    auto n = 354224848179261915075_cpp_int;
    std::cout << n << std::endl;

    auto m = 573147844013817084101_cpp_int;
    std::cout << m << std::endl;

    std::cout
        << std::boolalpha
        << (m + n == 927372692193078999176_cpp_int)
        << std::endl;
    
    return 0;
}

[出力]

354224848179261915075
573147844013817084101
true


User-defined literals はすばらしいですね!!

[boost]

  • ver 1.53.0

[コンパイラ]

  • g++ (GCC) 4.8.0 20121104 (experimental)