<div dir="ltr">Hi All,<div><br></div><div>Thanks for the feedback.</div><div>CC'ing cfe-dev, since they may have thoughts on this too.</div><div><br><div class="gmail_extra"><span style="font-family:arial,sans-serif;font-size:13px">> I think this should be</span><br style="font-family:arial,sans-serif;font-size:13px">
><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">> bool empty() const { return begin() == end(); }</span><br><br>Yes. Yes it should. Though you have to admit, my version would have sped up a lot of passes in the general case: if (Fn.blocks.empty())...</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">;)</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
For this reason I'd personally consider writing this as a free<br>
function over ranges:<br>
<br>
template<typename T><br>
bool is_empty(T t) { return begin(t) == end(t); }<br></blockquote><div><br></div><div>I have a knee-jerk dislike of free functions, just because they break with the existing container interface. That said they have two concrete advantages:</div>
<div><br></div><div>1) With a free function you get 'empty' for free if you implement a new range type (e.g. array_range).<br></div><div>2) You can specialize is_empty for types where (for whatever bizarre reason) testing emptiness is cheap but constructing iterators is expensive.</div>
<div><br></div><div>Whether that's worth breaking the existing idiom for, I don't know. I'm going to have to have a read through Duncan's links to get some more perspective (thanks for those Duncan!).</div>
<div><br></div><div>- Lang.</div></div></div></div></div>