From: David Abrahams (dave_at_[hidden])
Date: 2008-07-18 06:57:17
on Fri Jul 18 2008, Daryle Walker <darylew-AT-hotmail.com> wrote:
> On Jul 18, 2008, at 5:07 AM, Daryle Walker wrote:
>> On Jul 17, 2008, at 10:32 PM, David Abrahams wrote:
>>> Then, if I understand you correctly, none of the built-in types are
>>> char* p; // p is unintialized
>>> char* q = p; // invalid
>>> Yes, uninitialized is one of the valid states for a builtin type,
>>> i.e. part of the type's invariants.
>> Really, I was wondering about that (corner) case, especially since
>> it can't be replicated (i.e. it's undefined to use such a state as
>> a source). I'm thinking more about non-POD class types, which must
>> have an initial state with the internal primitive objects
> Well, I looked into it further. In C++ 2003, section 4.1 "Lvalue-to-
> rvalue conversion" [conv.lval], paragraph 1, an uninitialized object
> can only be used as an lvalue, converting it to a rvalue is undefined
Yes, that's what "// invalid" means.
> This means that your program is illegitimate and we can't count it as
> a counter-example.
Huh? By that logic no counterexample is possible. Or am I missing
-- Dave Abrahams BoostPro Computing http://www.boostpro.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk