Chris,
Yes, you are right! It wasn't std::deque I had the problem with. In fact, it was std::map; specifically operator[](). Technically, I could work around that by using insert() and testing the return value and, if necessary, calling operator[](). But that's neither very elegant nor maintainable, in my opinion. Especially when I've yet to see a downside of adding a default constructor.
Furthermore, I have other other container code that depends on default constructors. Sure, I could workaround period's lack of default constructor, but wheres the advantage in that?
SB
Hi Scott, Yes, using operator[] requires the object to be default constructible Working around that requires doing some sort of find first. Something like this (or possibly more efficiently with lower_bound if your items are equality comparable). auto iter = map.find(key); if(iter == map.end()) map.insert(make_pair(key, item)); else *iter = item; At any rate, I am not sure why the original authors decided that this type should not be default constructible. I think most value-like types should be, but not always, so it's not clear if this is an oversight or intentional. Someone with more knowledge of the library might know. I was more interested in that specific deque problem you were having. -- chris