<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 4, 2014 at 5:00 PM, Duncan P. N. Exon Smith <span dir="ltr"><<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">>> We could be clever and have SmallFoo<T, N> inherit from SmallFoo<T> -- if you<br>
>> pass the N you get the concrete derived type, if you don't, you get the basic<br>
>> functionality without a specific size. That is sadly the best (and worst!)<br>
>> idea I have....<br>
><br>
> This might not be terrible, though it does make it a lot harder to talk<br>
> about the two different things.<br></div></blockquote><div><br></div><div>I don't think it'll make it much harder. Realistically, all the things you can do with a small vector, you can do with both, except for construction. And the compiler will remind you of that. It's also a rare thing.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<br>
</div>The name overload of SmallFoo<T, N> and SmallFoo<T> is awesome.  But terrible.</blockquote></div><br>Looking at the other options presented, it actually seems the least bad. Specifically:</div><div class="gmail_extra">
<br></div><div class="gmail_extra">SmallFooUnsized<T> -- but it *has* a size. WTF?</div><div class="gmail_extra">SmallFooGen<T> -- but it doesn't generate anything.</div><div class="gmail_extra">SmallFooGeneric<T> -- what is more generic about this? (nothing)</div>
<div class="gmail_extra">SmallFooCommon<T> -- same as Impl, this is a totally unrelated suffix</div><div class="gmail_extra">BasicSmallFoo<T> -- Same as Impl on the other side but more confusing if you're familiar with basic_string -- why is the non-basic *more* templated?</div>
<div class="gmail_extra">SmallFooSuper<T> -- C++ uses "super" very rarely to never. It's a base class there. But we already have SmallVectorBase, arggg.</div></div>