For some reason mpz_class is initialized with 1-bit length assigned. Why it is not just zero-initialized, as soon as most(or all?) algorithms works well with such variables? It would be better for move semantics, which is now supported in gmp. Also then it will be possible to make default constuctor return constexpr.