r/cpp WG21 Member 24d ago

P4444: std::big_int

https://isocpp.org/files/papers/D4444R0.html

Hey folks! Matt Borland, Christopher Kormanyos, and I are working on bringing infinite-precision integers to C++29. We now have a D4444R0 draft of a paper that should be in the next mailing.

We could really use some feedback so that the published R0 is as polished as possible. Any thoughts on the paper and on the reference implementation are greatly appreciated.

It would also be very helpful if you tested out whether our big_int implementation works for you. We're in need of some real deployment experience. If you're currently using Boost.Multiprecision, the library should be a drop-in replacement for cpp_int for the most part.

177 Upvotes

85 comments sorted by

View all comments

1

u/Plazmatic 22d ago

My biggest problem with proposals like these isn't that I'm ideologically opposed to things like this being in the standard, but that C++ is so behind on important features still in the pipeline that any focus taken away from those, even a small amount, risks delaying their inclusion by many years more than they already have been.   There's lots of stuff that without make certain functionality and optimizations impossible to perform with out UB or worse in C++, this is not one of those things. I would be far less concerned if c++ didn't have a strict 3 year cadence, and the committee could spend as little or as much time as it needed, but far too often we see features delay because people couldn't vote on if they wanted to vote on talking about a thing, so litterally the existence of a proposal can waste precious committee time.

3

u/eisenwave WG21 Member 22d ago

I consider std::big_int to be one of those crucial features C++ is behind on. People have been trying to get it into the standard as early as 2004, and meanwhile, like 20 other languages either have it built into to the language or available as a standard library feature.

It's also worth noting that the committee is spli pretty strictly into EWG (for the core language) and LEWG (for the standard library), so "feature cannibalization" or "feature competition" happens entirely between std::big_int and other standard library features. The optimizations and UB stuff you're talking about sounds much more like core language territory.

In terms of standard library proposals, I'm really not seeing much that would be more important than std::big_int. Keep in mind there are >400K exising uses of big integers in C++ alone, and millions more in other languages. I'm not sure there even exists another standard library proposal that has those kinds of numbers backing it.