You could try emitting a warning manually, if you want. There's this example, although I don't know how well it works:
https://www.boost.org/doc/libs/1_91_0/libs/serialization/doc/static_warning....
Thanks for that. Seems theres a reddit thread with an easy implementation: https://www.reddit.com/r/cpp/comments/66o1ju/does_a_static_warn_exist/.
Then you would provide user with a macro to disable the warning. This would be better than disabling the operators by default.
However, my complaint was not about warnings but about the behavior when the operators are enabled by defining the BOOST_INT128_ALLOW_SIGN_COMPARE/BOOST_INT128_ALLOW_SIGN_CONVERSION macro. When the comparison operators are enabled, their behavior differs from the built-in ones, and I think this is a problem.
Seems as though Alexander and Peter have both agreed with you since my last response. I'll make the changes, and see if the static warning can be made to work in some fashion.
For an operation between a builtin and a int128 type of opposite sign, the builtin will be cast to the int128 type. These sign conversions match the behavior of __(u)int128_t. I will edit these sections to make them more clear.
Thanks, but do note that for an operation taking int128_t and uint128_t (in any order), int128_t is always expected to be converted to uint128_t. Is this expectation correct?
Yes, that is correct. Matt