"Beman Dawes" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > Here is the problem: > > If T is not an array, the interface must supply: > > T& operator*() const; > T* operator->() const; > > If T is an array && conversion to T* is not desired, the > interface must supply: > > T& operator[](size_t i) const; > > If conversion to T* is desired, the interface must supply: > > operator T*() const; > > In other words, there are four interface combinations: > > When T is not an array && conversion to T* is not desired: > > T& operator*() const; > T* operator->() const; > > When T is not an array && conversion to T* is desired: > > T& operator*() const; > T* operator->() const; > operator T*() const; > > When T is an array && conversion to T* is not desired: > > T& operator[](size_t i) const; > > When T is an array && conversion to T* is desired: > > operator T*() const;
That very nicely clarifies the requirements. I don't have time to munch on a detailed solution, but let me add this: operator[] doesn't have to be a member, which might simplify things considerably. By and large, I believe "smart pointers to arrays" are an oxymoron and should not be supported. Andrei _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost