Boost logo

Boost Users :

From: Ai Azuma (ai.azuma_at_[hidden])
Date: 2006-01-15 10:43:05


2006/1/15, Felipe Magno de Almeida <felipe.m.almeida_at_[hidden]>:
>
> [snip]
>
> Offtopic: Maybe the problem doesnt lie on const/non-const member
> functions? And the ugly syntax to choose the const when using a
> non-const class?
> Maybe this proposal shouldnt be more general? Not applying only to
> iterator/const_iterator. IMO, if it was, it would probably have more
> chance of acceptance.

IMHO, cbegin/cend proposal may be too specific as you mentioned.
There may be other cases where const/non-const member function
overload resolution by programmers is desirable. And inline cv-qualification
conversion may become a more generic approach in such cases.

For example, consider the following code.

// a vector class with copy-on-write
template< class T >
class vector_with_cow
{
  .....
  T &operator[]( size_type index );
  T const &operator[]( size_type index ) const;
  .....
};

void f( vector_with_cow< int > &v )
{
  if( const_( v )[0] == 0 ){ // do not require deep copy
    return;
  }

  // write some values into v, require deep copy
}

Best regards,

--
Ai Azuma <ai.azuma_at_[hidden]>

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net