Index: base/string_piece.h |
diff --git a/base/string_piece.h b/base/string_piece.h |
index f80ca5bb3e367157de6f82ddc6784f8a2b4567a2..6a9528f50dc3b2e04dc44f3a925a3f34132bc507 100644 |
--- a/base/string_piece.h |
+++ b/base/string_piece.h |
@@ -65,6 +65,14 @@ template <typename STRING_TYPE> class StringPieceDetail { |
StringPieceDetail(const STRING_TYPE& str) |
: ptr_(str.data()), |
length_(str.size()) {} |
+ StringPieceDetail(const typename STRING_TYPE::const_iterator& begin, |
+ const typename STRING_TYPE::const_iterator& end) |
+ : ptr_(begin == end ? NULL : &*begin), |
+ length_(end - begin) {} |
+ StringPieceDetail(const typename STRING_TYPE::iterator& begin, |
+ const typename STRING_TYPE::iterator& end) |
+ : ptr_(begin == end ? NULL : &*begin), |
+ length_(end - begin) {} |
StringPieceDetail(const value_type* offset, size_type len) |
: ptr_(offset), |
length_(len) {} |
@@ -168,6 +176,12 @@ template <typename STRING_TYPE> class BasicStringPiece : |
: internal::StringPieceDetail<STRING_TYPE>(str) {} |
BasicStringPiece(const STRING_TYPE& str) |
: internal::StringPieceDetail<STRING_TYPE>(str) {} |
+ BasicStringPiece(const typename STRING_TYPE::const_iterator& begin, |
+ const typename STRING_TYPE::const_iterator& end) |
+ : internal::StringPieceDetail<STRING_TYPE>(begin, end) {} |
+ BasicStringPiece(const typename STRING_TYPE::iterator& begin, |
+ const typename STRING_TYPE::iterator& end) |
+ : internal::StringPieceDetail<STRING_TYPE>(begin, end) {} |
BasicStringPiece(const value_type* offset, size_type len) |
: internal::StringPieceDetail<STRING_TYPE>(offset, len) {} |
}; |
@@ -182,6 +196,12 @@ template <> class BASE_EXPORT BasicStringPiece<std::string> : |
: internal::StringPieceDetail<std::string>(str) {} |
BasicStringPiece(const std::string& str) |
: internal::StringPieceDetail<std::string>(str) {} |
+ BasicStringPiece(const std::string::const_iterator& begin, |
+ const std::string::const_iterator& end) |
+ : internal::StringPieceDetail<std::string>(begin, end) {} |
+ BasicStringPiece(const std::string::iterator& begin, |
+ const std::string::iterator& end) |
+ : internal::StringPieceDetail<std::string>(begin, end) {} |
BasicStringPiece(const char* offset, size_type len) |
: internal::StringPieceDetail<std::string>(offset, len) {} |