Change Shl<T, T> (resp Shr<T, T>) for Int to Shl<uint, T> (resp Shr<uint, T>) #15407
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
At the moment, writing generic functions for integer types that involve shifting is rather verbose. For example, a function at shifts an integer left by 1 currently requires
If the shift amount is not 1, it's even worse:
This patch allows the much simpler implementation
It accomplishes this by changing the built-in integer types (and the
Int
trait) to implementShl<uint, T>
instead ofShl<T, T>
as it currently is defined. Note that the internal implementations ofshl
already cast the right-hand side touint
.BigInt
also implementsShl<uint, BigInt>
, so this increases consistency.All of the above applies similarly to right shifts, i.e.,
Shr<uint, T>
.