Commit f33b01f6 authored by Jose Dapena Paz's avatar Jose Dapena Paz Committed by Commit Bot

GCC: make begin/end/empty methods of StringPiece constexpr to allow them to be...

GCC: make begin/end/empty methods of StringPiece constexpr to allow them to be called from base::ConsumeDurationNumber

Compilation fails in GCC in base::ConsumeDurationNumber, as it
is a constexpr but it calls methods begin/end/empty in
StringPiece that are not constexpr. This change makes them
constexpr.
../../base/time/time.cc: In function ‘constexpr base::Optional<base::{anonymous}::ParsedDecimal> base::{anonymous}::ConsumeDurationNumber(base::StringPiece&)’:
../../base/time/time.cc:67:63: error: call to non-‘constexpr’ function ‘const value_type* base::BasicStringPiece<STRING_TYPE>::begin() const [with STRING_TYPE = std::__cxx11::basic_string<char>; base::BasicStringPiece<STRING_TYPE>::const_iterator = const char*; base::BasicStringPiece<STRING_TYPE>::value_type = char]’
   67 |   StringPiece::const_iterator orig_start = number_string.begin();
      |                                            ~~~~~~~~~~~~~~~~~~~^~

Bug: 819294, 1049498
Change-Id: If8813ac2651ac444cde7b874a1540c98c256c5b8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2394159Reviewed-by: default avatarJan Wilken Dörrie <jdoerrie@chromium.org>
Commit-Queue: José Dapena Paz <jdapena@igalia.com>
Cr-Commit-Position: refs/heads/master@{#805282}
parent ac6082bc
...@@ -198,7 +198,7 @@ template <typename STRING_TYPE> class BasicStringPiece { ...@@ -198,7 +198,7 @@ template <typename STRING_TYPE> class BasicStringPiece {
constexpr const value_type* data() const { return ptr_; } constexpr const value_type* data() const { return ptr_; }
constexpr size_type size() const noexcept { return length_; } constexpr size_type size() const noexcept { return length_; }
constexpr size_type length() const noexcept { return length_; } constexpr size_type length() const noexcept { return length_; }
bool empty() const { return length_ == 0; } constexpr bool empty() const noexcept { return length_ == 0; }
constexpr value_type operator[](size_type i) const { constexpr value_type operator[](size_type i) const {
CHECK(i < length_); CHECK(i < length_);
...@@ -249,12 +249,12 @@ template <typename STRING_TYPE> class BasicStringPiece { ...@@ -249,12 +249,12 @@ template <typename STRING_TYPE> class BasicStringPiece {
return STRING_TYPE(*this); return STRING_TYPE(*this);
} }
const_iterator begin() const { return ptr_; } constexpr const_iterator begin() const noexcept { return ptr_; }
const_iterator end() const { return ptr_ + length_; } constexpr const_iterator end() const noexcept { return ptr_ + length_; }
const_reverse_iterator rbegin() const { constexpr const_reverse_iterator rbegin() const noexcept {
return const_reverse_iterator(ptr_ + length_); return const_reverse_iterator(ptr_ + length_);
} }
const_reverse_iterator rend() const { constexpr const_reverse_iterator rend() const noexcept {
return const_reverse_iterator(ptr_); return const_reverse_iterator(ptr_);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment