Boost.Multiprecision の constexpr 対応

Boost.Multiprecision では固定長オブジェクトのコンストラクタが constexpr に対応しているみたいです。
演算子は未対応みたいですが。

[ソース]

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


int
main(){
    namespace bm = boost::multiprecision;

    // ok
    // 固定長オブジェクトのみ初期化出来る
    constexpr bm::int128_t   n = 42;
    constexpr bm::uint1024_t m = 0xFFFFFFFF00000000uLL;

    // error
    // 演算子は使用できない
    constexpr auto nn = n * 2;
    static_assert(n == bm::int128_t(84), "");

    // error
    // 可変長オブジェクトでは使用できない
    constexpr bm::cpp_int o = -42;

    return 0;
}

[boost]

  • ver 1.53.0

[コンパイラ]

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