On Jul 26, 2011, at 3:34 PM, Eli Friedman wrote:

> On Tue, Jul 26, 2011 at 3:28 PM, Sean Hunt <[email protected]> 
> wrote:
>> On Tue, Jul 26, 2011 at 15:25, Eli Friedman <[email protected]> wrote:
>>> Author: efriedma
>>> Date: Tue Jul 26 17:25:31 2011
>>> New Revision: 136161
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=136161&view=rev
>>> Log:
>>> A couple minor issues with Sema for delete:
>>> 
>>> 1. Attempting to delete an expression of incomplete class type should be an 
>>> error, not a warning.
>>> 
>>> 2. If someone tries to delete a pointer to an incomplete class type, make 
>>> sure we actually emit
>>> the delete expression after we warn.
>> 
>> Deleting an object of incomplete class type is well-formed;
>> [expr.delete]/5. This should not be an error.
> 
> [expr.delete]/1: "The operand shall have a pointer to object type, or
> a class type having a single non-explicit conversion function (12.3.2)
> to a pointer to object type."  An expression of incomplete class type
> isn't either of those.


An incomplete class type is an object type in C++. You're probably thinking of 
C, where "incomplete types" are distinct from "object types".

Besides, check out [expr.delete]p5:
        
If the object being deleted has incomplete class type at the point of deletion 
and the complete class has a

non-trivial destructor or a deallocation function, the behavior is undefined.


        - Doug
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to