*** fixed_array.hpp	Fri Dec 14 22:45:20 2007
--- fixed_array.hpp.original	Tue Dec  4 23:43:27 2007
***************
*** 103,109 ****
  # include <string>                      // for std::string - sigh!
  #endif /* compiler */
  #include <stdexcept>                    // for std::out_of_range
- #include <algorithm>                    // std::swap
  
  /* /////////////////////////////////////////////////////////////////////////
   * Namespace
--- 103,108 ----
***************
*** 232,239 ****
  #endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
  
  // Construction
- public:
                    fixed_array_1d(T *data, index_type d0);
      ss_explicit_k fixed_array_1d(index_type d0);
                    fixed_array_1d(index_type d0, value_type const& t);
                    fixed_array_1d(class_type const& rhs);
--- 231,238 ----
  #endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
  
  // Construction
                    fixed_array_1d(T *data, index_type d0);
+ public:
      ss_explicit_k fixed_array_1d(index_type d0);
                    fixed_array_1d(index_type d0, value_type const& t);
                    fixed_array_1d(class_type const& rhs);
***************
*** 288,296 ****
  
  // Access
  public:
-     value_type              *data();
      value_type const        *data() const;
-     void                     swap(class_type& other);
  
  // Implementation
  private:
--- 287,293 ----
***************
*** 303,310 ****
  
  // Members
  private:
!     T *           m_data;
!     index_type    m_d0;
  
      friend class fixed_array_2d<T, A, P, true>;
      friend class fixed_array_2d<T, A, P, false>;
--- 300,307 ----
  
  // Members
  private:
!     T * const           m_data;
!     const index_type    m_d0;
  
      friend class fixed_array_2d<T, A, P, true>;
      friend class fixed_array_2d<T, A, P, false>;
***************
*** 385,392 ****
  #endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
  
  // Construction
! public:
      fixed_array_2d(T *data, index_type d0, index_type d1);
      fixed_array_2d(index_type d0, index_type d1);
      fixed_array_2d(index_type d0, index_type d1, value_type const& t);
      fixed_array_2d(class_type const& rhs);
--- 382,390 ----
  #endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
  
  // Construction
! private:
      fixed_array_2d(T *data, index_type d0, index_type d1);
+ public:
      fixed_array_2d(index_type d0, index_type d1);
      fixed_array_2d(index_type d0, index_type d1, value_type const& t);
      fixed_array_2d(class_type const& rhs);
***************
*** 444,452 ****
  
  // Access
  public:
-     value_type              *data();
      value_type const        *data() const;
-     void                     swap(class_type& other);
  
  // Implementation
  private:
--- 442,448 ----
***************
*** 460,469 ****
  
  // Members
  private:
!     T *           m_data;
!     index_type    m_d0;
!     index_type    m_d1;
!     size_type     m_size;
  
      friend class fixed_array_3d<T, A, P, true>;
      friend class fixed_array_3d<T, A, P, false>;
--- 456,465 ----
  
  // Members
  private:
!     T * const           m_data;
!     const index_type    m_d0;
!     const index_type    m_d1;
!     const size_type     m_size;
  
      friend class fixed_array_3d<T, A, P, true>;
      friend class fixed_array_3d<T, A, P, false>;
***************
*** 805,810 ****
--- 801,807 ----
  #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
  
  // fixed_array_1d
+ 
  template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
  inline ss_typename_type_k fixed_array_1d<T, A, P, R>::pointer fixed_array_1d<T, A, P, R>::allocate_(ss_typename_type_k fixed_array_1d<T, A, P, R>::size_type n)
  {
***************
*** 1081,1105 ****
  #endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
  
  template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
- inline ss_typename_type_k fixed_array_1d<T, A, P, R>::value_type * fixed_array_1d<T, A, P, R>::data()
- {
-     return m_data;
- }
- 
- template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
  inline ss_typename_type_k fixed_array_1d<T, A, P, R>::value_type const* fixed_array_1d<T, A, P, R>::data() const
  {
      return m_data;
  }
  
! template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
! inline void fixed_array_1d<T, A, P, R>::swap( fixed_array_1d& r )
! {
!     std::swap( static_cast<allocator_type&>(*this),
!                static_cast<allocator_type&>(r) ); 
!     std::swap( m_data, r.m_data );
!     std::swap( m_d0, r.m_d0 );
! }
  
  template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
  inline ss_typename_type_k fixed_array_2d<T, A, P, R>::pointer fixed_array_2d<T, A, P, R>::allocate_(ss_typename_type_k fixed_array_2d<T, A, P, R>::size_type n)
--- 1078,1090 ----
  #endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
  
  template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
  inline ss_typename_type_k fixed_array_1d<T, A, P, R>::value_type const* fixed_array_1d<T, A, P, R>::data() const
  {
      return m_data;
  }
  
! 
! // fixed_array_2d
  
  template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
  inline ss_typename_type_k fixed_array_2d<T, A, P, R>::pointer fixed_array_2d<T, A, P, R>::allocate_(ss_typename_type_k fixed_array_2d<T, A, P, R>::size_type n)
***************
*** 1431,1458 ****
  #endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
  
  template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
- inline ss_typename_type_k fixed_array_2d<T, A, P, R>::value_type * fixed_array_2d<T, A, P, R>::data() 
- {
-     return m_data;
- }
- 
- template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
  inline ss_typename_type_k fixed_array_2d<T, A, P, R>::value_type const* fixed_array_2d<T, A, P, R>::data() const
  {
      return m_data;
  }
  
- template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
- inline void fixed_array_2d<T, A, P, R>::swap(fixed_array_2d& other) 
- {
-     std::swap( static_cast<allocator_type&>(*this),
-                static_cast<allocator_type&>(other) ); 
-     std::swap( m_data, other.m_data );
-     std::swap( m_d0, other.m_d0 );
-     std::swap( m_d1, other.m_d1 );
-     std::swap( m_size, other.m_size );
- }
- 
  // fixed_array_3d
  
  template <ss_typename_param_k T, ss_typename_param_k A, ss_typename_param_k P, ss_bool_t R>
--- 1416,1426 ----
