diff --git a/src/google/protobuf/repeated_field.h b/src/google/protobuf/repeated_field.h index ccae6bb97a..bc70129181 100644 --- a/src/google/protobuf/repeated_field.h +++ b/src/google/protobuf/repeated_field.h @@ -716,7 +716,7 @@ inline void RepeatedField::Add(Iter begin, Iter end) { if (std::is_base_of< std::forward_iterator_tag, typename std::iterator_traits::iterator_category>::value) { - int additional = std::distance(begin, end); + int additional = static_cast(std::distance(begin, end)); if (additional == 0) return; int new_size = current_size_ + additional; diff --git a/src/google/protobuf/repeated_ptr_field.h b/src/google/protobuf/repeated_ptr_field.h index f58481dff3..706a005761 100644 --- a/src/google/protobuf/repeated_ptr_field.h +++ b/src/google/protobuf/repeated_ptr_field.h @@ -1351,7 +1351,7 @@ inline void RepeatedPtrField::Add(Iter begin, Iter end) { if (std::is_base_of< std::forward_iterator_tag, typename std::iterator_traits::iterator_category>::value) { - int reserve = std::distance(begin, end); + int reserve = static_cast(std::distance(begin, end)); Reserve(size() + reserve); } for (; begin != end; ++begin) { @@ -1496,8 +1496,8 @@ RepeatedPtrField::erase(const_iterator position) { template inline typename RepeatedPtrField::iterator RepeatedPtrField::erase(const_iterator first, const_iterator last) { - size_type pos_offset = std::distance(cbegin(), first); - size_type last_offset = std::distance(cbegin(), last); + size_type pos_offset = static_cast(std::distance(cbegin(), first)); + size_type last_offset = static_cast(std::distance(cbegin(), last)); DeleteSubrange(pos_offset, last_offset - pos_offset); return begin() + pos_offset; }