|
Boost : |
From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2003-01-19 10:38:18
On Sun, 19 Jan 2003 09:42:51 -0500, David Abrahams
<dave_at_[hidden]> wrote:
>>>For another thing, it would be a compile-error if the
>>>expression *can* be implicitly converted to the destination type,
>>>which makes no sense to me.
>>
>> Isn't this the intent?
>
>I don't know what the intent is; you never explained that to me. What
>this does is to static_cast only when it must be forced (often in the
>"unsafe" direction); it was hard to see how that could be useful.
>Maybe just as a way of stating and checking that you know what you're
>doing?
Well, actually I did it just for the fun of it. The original thread
was about implicit_cast, not explicit, and I added some thoughts. In
any case the comment I've made here about the comma operator applies
to the implicit piece as well:
template <typename T>
char implicit_cast (typename identity<T>::type x) {
return x;
}
// incomplete return type now is here
template <typename T>
void implicit_cast (...);
#define IMPLICIT_CAST(dst_type, expr) \
( sizeof( implicit_cast<dst_type>(expr) ) \
, \
static_cast<dst_type>(expr) \
)
Genny.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk