lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


> 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 ...