template<class T>
constexpr T add_sat(T x, T y) noexcept;
template<class T>
constexpr T sub_sat(T x, T y) noexcept;
template<class T>
constexpr T mul_sat(T x, T y) noexcept;
template<class T>
constexpr T div_sat(T x, T y) noexcept;
template<class R, class T>
constexpr R saturate_cast(T x) noexcept;