Item 4. Maximally Reusable Generic Containers桺art 1
Difficulty: 8 
How flexible can you make this simple container class? Hint: You'll learn more than a little about member templates along the way. 
How can you best implement copy construction and copy assignment for the following fixed-length vector class? How can you provide maximum usability for construction and assignment? Hint: Think about the kinds of things that client code might want to do. 
template<typename T, size_t size> 
class fixed_vector
{
public:
  typedef T*       iterator;
  typedef const T* const_iterator;
  iterator       begin()       { return v_; }
  iterator       end()         { return v_+size; }
  const_iterator begin() const { return v_; }
  const_iterator end()   const { return v_+size; }
private:
  T v_[size];
};
Note: Don't fix other things. This container is not intended to be fully STL-compliant, and it has at least one subtle problem. It's meant only to illustrate some important issues in a simplified setting. 
 
 |