diff --git a/single_include/flux.hpp b/single_include/flux.hpp index 09fcbca2..917bfc71 100644 --- a/single_include/flux.hpp +++ b/single_include/flux.hpp @@ -5128,8 +5128,10 @@ struct cartesian_traits_base_impl { requires (CartesianKind == cartesian_kind::product && (sized_sequence && ...)) { - return std::apply([](auto&... base) { - return (flux::size(base) * ...); + return std::apply([](auto& base0, auto&... bases) { + distance_t sz = flux::size(base0); + ((sz = num::checked_mul(sz, flux::size(bases))), ...); + return sz; }, self.bases_); }