Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2002-08-21 07:13:02

From: "Peter Dimov" <pdimov_at_[hidden]>

> From: "David Abrahams" <dave_at_[hidden]>
> >
> > I'm not sure what problem you're trying to solve, but open problem is:
> >
> > "Given a type T with an explicit conversion from U and an object of
> U,
> > how do I [placement] new a T"?
> new T(u);
> unless you are counting C-style casts as explicit conversions, i.e.
> typedef char * U;
> int const i;
> U(&i); // works but do you really want that?

struct bar {};
struct foo {
   explicit foo(bar const&);

bar b;
foo *f = new foo(b); // OK!

enum baz { x = 444; };
baz* z = new baz(33); // Error!

So, a C-style cast may look syntactically identical to an explicit
conversion, but still might be different?

Hmm, maybe the key here *is* to change my requirements from:

    "Target(src)" is valid

    "new Target(src)" is valid

But that still leaves me with an uneasy feeling that something's amiss with
the language definition (what's new?)


           David Abrahams * Boost Consulting
dave_at_[hidden] *

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