template
class gapbuffer : protected std::vector >
{
  /*
public:
  typedef std::allocator A;
  typedef gapbuffer self_type;
#endif
 */
  typedef std::vector base_type;
  
  typedef typename base_type::size_type size_type;
  
  typedef typename base_type::value_type value_type;

  typedef typename base_type::reference reference;
  typedef typename base_type::const_reference const_reference;

  typedef typename base_type::pointer pointer;
  typedef typename base_type::const_pointer const_pointer;
  
  typedef typename base_type::iterator base_iterator;
  typedef typename base_type::const_iterator const_base_iterator;
private:
    //unsigned int -> size_type;
  size_type gb_, ge_;
  const size_type initGapSize_;
public:

  template
  class iterator_base : public std::random_access_iterator_tag {
  public:

    typedef T value_type;
    //typedef typename Traits::value_type value_type;
    typedef typename Traits::pointer    pointer;
    typedef typename Traits::reference  reference;

    typedef iterator_base<
      T, 
      policy::non_const_traits
      ,Boss
    > iterator;
//以下略 キーワード