"David B. Held" wrote:

> > [...]
> >     template <typename T>
> >     void operator()(const T& operand) const
> >     {
> >         operand.~T();
> >     }
> > [...]
>
> Is the destructor really a const function?
>
> Dave
>
The object being destroyed is the formal parameter "operand". The object whose operator() is called is not changed at all, thus the 'const' qualification is in place.

-Itay.