Boost logo

Boost :

From: Jim Apple (japple_at_[hidden])
Date: 2004-02-01 12:46:34

Fernando Cacciola wrote:
> A deep-const wrapper with preserving-const will be such that:
> [snip]
> value_initialized<> is a shallow-preserving-const wrapper:
> [snip]
> Is this the behaviour you want?

Either one looks fine to me. I am concerned about the present hole,
however, where const value_initialized<T> a has a user-defined
conversion operator to T &.

[snip stuff I agree with]

> but can have the member functions, including conversion, without any
> worries about older compilers screaming ambiguity.

So, I was wrong. Compilers with EDG say:
struct A;
//typedef int A;

struct B {
   operator const A & ();

void g(const A &);
void g(A &);

int main() {
Fails with a claim of ambiguity, but succeeds when line 1 is commented
out and line 2 is commented in.

So I have to think about that some more.

There's also the though of whether to provide template conversion
functions - it allows any allowed conversions, but creates ambiguity in
struct A;

struct bar {

can_init<A> z;

bar x(z);


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