```
SET compile_expressions = 1
SELECT GREATEST(2,0)
```

static inline constexpr bool isSaturatedValue(bool) { return false; }
    static inline constexpr bool isSaturatedValueTernary(UInt8) { return false; }
    static inline constexpr ResultType apply(UInt8 a, UInt8 b) { return a != b; }
    static inline constexpr bool specialImplementationForNulls() { return false; }
#if USE_EMBEDDED_COMPILER
    static inline llvm::Value * apply(llvm::IRBuilder<> & builder, llvm::Value * a, llvm::Value * b)
    {
        return builder.CreateXor(a, b);
    }
#endif
};
template <typename A>
struct NotImpl
{
    using ResultType = UInt8;
    static inline ResultType apply(A a)
    {
        return !a;
    }
#if USE_EMBEDDED_COMPILER
    static inline llvm::Value * apply(llvm::IRBuilder<> & builder, llvm::Value * a)
    {
        return builder.CreateNot(a);
    }
#endif
};
template <typename Impl, typename Name>
class FunctionAnyArityLogical : public IFunction