This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Proposal for std::vector.


Matt Austern <austern@apple.com> writes:

| I'm afraid you're right too.  Fortunately, I really do only mean "a
| bit" more
| complicated.  The solution is pretty simple: instead of inheriting
| directly
| from the allocator, instead inherit from a thin wrapper class that
| provides
| nothing but the allocator functions we care about.


Just to make sure I understand your suggestion.  In doing so, how do
we prevent the "virtual function is a sin you inherit from your
descendents" syndrom and benefit at the same time from the empty base
optimization? 

The solution I'm thinking of would be:

  template<class Allocator>
    WrapAllocator {
       Allocator allocator;
       // standard allocator interface goes here 
       // as forwarding functions to Allocator
       // ...
    };

  template<class T, class Allocator = allocator<T> >
    struct vector : private WrapAllocator<Allocator> {
      // ...
    };

Is that what you're alluding to?

-- Gaby


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]