| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| #include "scoped_refptr.h" |
| typedef std::map<std::string, scoped_refptr<const Foo> > MyMap; |
| : public std::iterator<std::input_iterator_tag, scoped_refptr<const Foo> > { |
| MyIter(const MyIter& other) : it_(other.it_) {} |
| explicit MyIter(MyMap::const_iterator it) : it_(it) {} |
| const scoped_refptr<const Foo> operator*() { return it_->second; } |
| bool operator!=(const MyIter& other) { return it_ != other.it_; } |
| bool operator==(const MyIter& other) { return it_ == other.it_; } |
| MyMap::const_iterator it_; |
| void TestsAScopedRefptr() { |
| MyIter my_begin(map.begin()); |
| MyIter my_end(map.end()); |
| for (MyIter it = my_begin; it != my_end; ++it) { |