Index: mojo/public/cpp/bindings/lib/array_serialization.h |
diff --git a/mojo/public/cpp/bindings/lib/array_serialization.h b/mojo/public/cpp/bindings/lib/array_serialization.h |
index 5db27a5502a5a238ec1a6765d8f2854248a36e36..a5a6c52344d178665589b78de751f39b0c1cd1bc 100644 |
--- a/mojo/public/cpp/bindings/lib/array_serialization.h |
+++ b/mojo/public/cpp/bindings/lib/array_serialization.h |
@@ -34,6 +34,7 @@ class ArrayIterator {}; |
template <typename Traits, typename MaybeConstUserType> |
class ArrayIterator<Traits, MaybeConstUserType, true> { |
public: |
+ using UserType = typename std::remove_const<MaybeConstUserType>::type; |
using IteratorType = decltype( |
CallGetBeginIfExists<Traits>(std::declval<MaybeConstUserType&>())); |
@@ -44,10 +45,11 @@ class ArrayIterator<Traits, MaybeConstUserType, true> { |
size_t GetSize() const { return Traits::GetSize(input_); } |
using GetNextResult = |
- decltype(Traits::GetValue(std::declval<IteratorType&>())); |
+ decltype(Traits::GetValue(std::declval<MaybeConstUserType&>(), |
+ std::declval<IteratorType&>())); |
GetNextResult GetNext() { |
- auto& value = Traits::GetValue(iter_); |
- Traits::AdvanceIterator(iter_); |
+ auto& value = Traits::GetValue(input_, iter_); |
+ Traits::AdvanceIterator(input_, iter_); |
return value; |
} |