#pragma once #include #include #define FOR_BASIC_NUMERIC_TYPES(M) \ M(UInt8) \ M(UInt16) \ M(UInt32) \ M(UInt64) \ M(Int8) \ M(Int16) \ M(Int32) \ M(Int64) \ M(Float32) \ M(Float64) // No UInt128 here because of the name conflict #define FOR_NUMERIC_TYPES(M) \ M(UInt8) \ M(UInt16) \ M(UInt32) \ M(UInt64) \ M(UInt256) \ M(Int8) \ M(Int16) \ M(Int32) \ M(Int64) \ M(Int128) \ M(Int256) \ M(Float32) \ M(Float64) namespace DB { /** Create an aggregate function with a numeric type in the template parameter, depending on the type of the argument. */ template