lemon/bits/stl_iterators.h
changeset 1133 93d455c647be
parent 1130 0759d974de81
     1.1 --- a/lemon/bits/stl_iterators.h	Tue Apr 14 16:14:32 2015 +0200
     1.2 +++ b/lemon/bits/stl_iterators.h	Tue Apr 14 16:36:45 2015 +0200
     1.3 @@ -55,12 +55,13 @@
     1.4    /// \c P is the type of the parameter of the constructor of \c LIT.
     1.5    template<class LIT, class P>
     1.6    class LemonRangeWrapper1 {
     1.7 -    const P &_p;
     1.8      typedef LemonItWrapper<LIT> It;
     1.9 +    It _begin;
    1.10 +    
    1.11    public:
    1.12 -    LemonRangeWrapper1(const P &p) : _p(p) {}
    1.13 +    LemonRangeWrapper1(const P &p) : _begin(LIT(p)) {}
    1.14      It begin() const {
    1.15 -      return It(LIT(_p));
    1.16 +      return _begin;
    1.17      }
    1.18      It end() const {
    1.19        return It(lemon::INVALID);
    1.20 @@ -80,13 +81,12 @@
    1.21    /// of the constructor of \c LIT.
    1.22    template<class LIT, class P1, class P2>
    1.23    class LemonRangeWrapper2 {
    1.24 -    const P1 &_p1;
    1.25 -    const P2 &_p2;
    1.26 -    typedef LemonItWrapper<LIT> It;
    1.27 -  public:
    1.28 -    LemonRangeWrapper2(const P1 &p1, const P2 &p2) : _p1(p1), _p2(p2) {}
    1.29 +    typedef LemonItWrapper<LIT> It; 
    1.30 +    It _begin;
    1.31 + public:
    1.32 +    LemonRangeWrapper2(const P1 &p1, const P2 &p2) : _begin(LIT(p1, p2)) {}
    1.33      It begin() const {
    1.34 -      return It(LIT(_p1, _p2));
    1.35 +      return _begin;
    1.36      }
    1.37      It end() const {
    1.38        return It(lemon::INVALID);