Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2003-02-20 07:13:35

Itay Maman wrote:
> "David B. Held" <dheld_at_[hidden]> wrote in message
> news:b2ug4i$a8q$
>> "Eric Friedman" <ebf_at_[hidden]> wrote in message
>> news:b2uflv$86s$
>>> [...]
>>> const T& r = ...;
>>> r.~T();
>>> Even if my understanding is correct though, it may be best for
>>> destroyer to take a non-const reference to avoid confusion.
>> Comeau says it's ok, so I'd just leave it as is. It does seem
>> peculiar to me, though.
>> Dave
> I was surprised to read that, but the standard says it is Kosher:
> [12.4.2]
> "...A destructor can be invoked for a const, volatile or const
> volatile object. A destructor shall not be declared const, volatile
> or const volatile (_class.this_). const and volatile semantics
> (_dcl.type.cv_) are not applied on an object under destruction."

Destroying a const object is fine, but there is no reason to have a const in
the argument.

template<class T> void call_destructor(T & t) { t.~T(); }

X const x;

f(x); // OK, T = X const

f(5); // compile-time fail

Boost list run by bdawes at, gregod at, cpdaniel at, john at