"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

Reply via email to