`SELECT bitShiftLeft(toInt256(-2), number)`

`shift left for negative lhsbers is underfined!`

See https://clickhouse-test-reports.s3.yandex.net/14525/44726c37c3003ec8112dbf32efa350bd595163b3/fuzzer/report.html#fail1
static_assert(ArithmeticConcept<Arithmetic>(), "");
    using type = std::conditional_t<
        std::is_floating_point<Arithmetic>::value,
        Arithmetic,
        std::conditional_t<
            sizeof(Arithmetic) < Bits * sizeof(long),
            wide_integer<Bits, Signed>,
            std::conditional_t<
                Bits * sizeof(long) < sizeof(Arithmetic),
                Arithmetic,
                std::conditional_t<
                    Bits * sizeof(long) == sizeof(Arithmetic) && (is_same<Signed, signed>::value || std::is_signed<Arithmetic>::value),
                    Arithmetic,
                    wide_integer<Bits, Signed>>>>>;
};
template <typename Arithmetic, size_t Bits, typename Signed>
struct common_type<Arithmetic, wide_integer<Bits, Signed>> : std::common_type<wide_integer<Bits, Signed>, Arithmetic>
{
};
template <size_t Bits, typename Signed>
struct wide_integer<Bits, Signed>::_impl
{
    static_assert(Bits % CHAR_BIT == 0, "=)");
    
    static const int base_bits = sizeof(base_type) * CHAR_BIT;
    static const int arr_size = Bits / base_bits;
    static constexpr size_t _Bits = Bits;
    static constexpr bool _is_wide_integer = true;
    
    static constexpr unsigned little(unsigned idx) { return idx; }