On Thursday, 5 December 2013 at 18:34:40 UTC, Andrei Alexandrescu wrote:
Trees and graphs are not special cases. They're bread and butter objects with fields that are in turn allocated etc.

Yes, and they aren't really linear containers either, but that doesn't mean we throw the input range concept out the window.

The graph itself could carry the allocator, and just the same you have a function "getNeighbors" that returns an input range of a node's neighboring nodes, the graph could also give a collection of different ouput ranges that takes care of allocation.

I'm just saying it's not something I'd like to see that *functions* take allocators as arguments. I think that should be abstracted by the containers/ranges themselves, in such a way that the functions only have to use things like "pushBack" (eg: std::back_inserter).

Consider how difficult it would be (for both the implementer and the user) to fill via an output range an object (class or struct) that has a few fields that need allocation (such as strings and arrays). It becomes a mini-serialization project. We can't realistically propose that as a way to allow users to control memory allocation.

I'm out of my league on this one.

Reply via email to