Boost logo

Boost :

Subject: Re: [boost] [range] Proposal: addition of front(), back(), at(), operator[]
From: Valentin Ziegler (vziegler_at_[hidden])
Date: 2014-03-24 05:14:30


Hi Adam,

> 1. front()
> returning the reference to the first element precondition (assert): !empty(rng)

> return *begin(rng);

> 2. back()
> returning the reference to the last element precondition (assert): !empty(rng)

> For BidirectionalRange
> return *(--end(rng));

In 99% of all cases above implementations will work just fine. However, there may be rare cases where the lifetime of the reference is bound to the lifetime of the iterator:

[iterator.requirements.general] 9. Destruction of an iterator may invalidate pointers and references previously obtained from that iterator.

Valentin

--
Valentin Ziegler | vziegler_at_[hidden]
Senior Software Engineer
We are looking for C++ Developers: http://www.think-cell.com/career
think-cell Software GmbH | Chausseestr. 8/E | 10115 Berlin | Germany
http://www.think-cell.com | phone +49 30 666473-10 | US phone +1 800 891 8091
Amtsgericht Berlin-Charlottenburg, HRB 85229 | European Union VAT Id DE813474306
Directors: Dr. Markus Hannebauer, Dr. Arno Sch?dl

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk