<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 10, 2015 at 5:52 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class=""><br><div class="gmail_quote">On Sat, Jan 10, 2015 at 5:16 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="overflow:hidden">Author: chandlerc<br>
Date: Sat Jan 10 19:16:26 2015<br>
New Revision: 225592<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=225592&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=225592&view=rev</a><br>
Log:<br>
[<span>ADT</span>] Remove the unused default constructor for iterator_range.<br>
<br>
This default constructor is a bit weird. It left the range in an invalid<br>
state. That might be reasonable so that you can construct a local<br>
iterator range and assign to it based on some logic to compute the range<br>
you want. If folks would like to support that use case, I can add it<br>
back, but in 238-odd usages none have actually wanted to do this. ;]</div></blockquote></div><br></span>Actually, there were 3 usages in Clang.</div><div class="gmail_extra"><br></div><div class="gmail_extra">We could value initialize the iterators in the default constructor, but that would preclude using iterator_range with InputIterators (restricting it to ForwardIterators and stronger). Or we could only provide the default constructor when the iterators provide a default constructor, but that's lots of template goop for what is otherwise super simple. </div></div></blockquote><div><br>You wouldn't actually need template goop, would you - it'd just fail to compile if the iterator doesn't have a default ctor. It's not like we need to SFINAE it away, do we? (Well, I guess if someone ends up using is_default_constructible on the range, it would fail - but I don't know that it's too important to account for that until it actually comes up, but maybe I'm understating the pain that would cause?)<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">And I've only found 3 usages that were easily "fixed" to just pass the iterators explicitly. But I wanted to mention the option here in case others feel strongly we should make empty-range construction simple in this way.</div></div></blockquote><div><br>I haven't looked closely at the clang changes, so I'm not sure - but I can imagine it might be nice to easily create a null range (as we do for ArrayRef quite frequently). Not too fussed, though. Maybe leaving some of this as a comment in iterator_range so someone knows why it was omitted/what the gotchas to adding one are if they think they need one. (usually source history would suffice, but with no lines to blame, etc, it's harder to do that)<br><br>- David<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class="HOEnZb"><font color="#888888"><div class="gmail_extra"><br></div><div class="gmail_extra">-Chandler</div></font></span></div>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div></div>