user-defined literals で多倍長整数型を定義
整数であれば、template
とりあえず、手頃な多倍長整数型がなかったので st::array へと変換しています。
[ソース]
#include <iostream> #include <array> template<typename Char> constexpr int ctoi(Char c){ return c - Char('0'); } template<char... cs> constexpr std::array<char, sizeof...(cs)> operator "" _bigint(){ return {{ ctoi(cs)... }}; } int main(){ auto num = 23198301028390120478137017397871037889071208037912879137927891_bigint; for(auto n : num){ std::cout << int(n); } return 0; }
[出力]
23198301028390120478137017397871037889071208037912879137927891
こんな感じ。
今ふと思ったけど、別に template
こういうのはありかなー?