
On Oct 11, 2011, at 5:11 PM, Jeffrey Lee Hellrung, Jr. wrote:
On Tue, Oct 11, 2011 at 4:55 PM, Christian Holmquist <c.holmquist@gmail.com>wrote:
FWIW, I think that static_vector should throw std::bad_alloc if it runs out of space, to mimic an out of memory situation for ordinary containers. (Consider an algorithm that needs temporary storage, and user passes a static_vector as tmp storage policy. The algorithm might be designed to handle std::bad_alloc in some way).
I'm presently against any throwing behavior related to resizing of a StaticVector/static_vector, since one can usually easily check the relevant preconditions themselves. Just assert. For those who want defined behavior in resize overflow (or underflow) situations, I'd say derive or wrap. Some kind of policy template parameter could be possible, but right now it feels like that's an unnecessary complication on an otherwise relatively simple data structure.
That's not to say I can't be dissuaded from this opinion.
If you are checking all the preconditions yourself, why do you care if it throws or not? [ That sounds glib - but it's a serious question. ] Why do you care if it ASSERTs, calls abort (), throws, or gets your cat pregnant? -- Marshall Marshall Clow Idio Software <mailto:mclow.lists@gmail.com> A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait). -- Yu Suzuki