In “Trivial relocation, std::swap
, and a $2000 prize” (2023-02-24), I wrote:
I hereby offer a $2000 (USD) cash prize to the first person who produces an efficient and conforming implementation
of std::swap_ranges
, std::rotate
, and std::partition
— using memmove
-based trivial swapping where possible,
but falling back to a conforming std::swap
implementation when the objects involved might be
potentially overlapping subobjects.
Here (backup)
is the test suite that the winning implementation will pass. […]
This generated a few helpful comments on /r/cpp,
zero actual submissions, and enough motivation (coupled with those helpful /r/cpp comments) that I went off
and implemented a solution myself. So as of 2023-03-03, my libc++ fork passes
all eight of my test cases, and I hereby award myself the prize for libc++! ;)
In the spirit of fair play, and also because I really want to see P1144 implementations in other STLs,
I’m keeping the prize open for patches against libstdc++ and Microsoft STL. If you can make libstdc++
or Microsoft STL pass the test suite, please tell me about it, and I’ll happily fork over.
Offer ends December 31st, 2024, just so I don’t have to worry about forgetting to formally close the window
and having someone try to claim the prize ten years from now.