|
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() {
g(B());
}
----------------------------------------------------------------
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 {
bar(A);
};
can_init<A> z;
bar x(z);
---------------------------------------------------------------------
Jim
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk