[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: __bshr vs __bshl
- From: Albert Chan <albertmcchan@...>
- Date: Sat, 7 Apr 2018 16:34:52 -0400
> On Apr 7, 2018, at 2:58 PM, Reinder Feenstra <reinderfeenstra@gmail.com> wrote:
>
> Hi All,
>
> While implementing all meta methods in some glue code between Lua and
> C++ I'd became curious why __bshr and __bshl both exist. For the
> compare operators a smart trick is used so you don't need to implement
> them all.
>
> To make sure my glue code behaves the same as Lua I simply tried all
> operators, e.g.
>
> Lua 5.3.3 Copyright (C) 1994-2016 Lua.org, PUC-Rio
>> print(2 << -1)
> 1
>> print(2 >> 1)
> 1
>
> This is legal in Lua, so why not only a __bshr meta method and call
> this with a negative shift count for the << operator?
Same reason we have __sub operator (for convenience):
A - B = A + (-B)
A + (-B) is legal in Lua, so why not ...