According to my n3225 C ++ 0x draft, WindowsApi::Uuid is a POD class.
From page 219: A POD structure is a class that is a trivial class and a standard layout class, and does not have non-static data members such as non-POD struct, non-POD union (or an array of such types).
A trivial class is a class that has a trivial default constructor and can be trivially copied:
A trivially-copied class is a class that:
- does not have non-trivial copy constructors (12.8),
- has no non-trivial displacement constructors (12.8),
- no nontrivial copy assignment operators (13.5.3, 12.8),
- has no non-trivial displacement assignment operators (13.5.3, 12.8) and
- has a trivial destructor (12.4).
A standard layout class is a class that:
- does not have non-static data members such as a non-standard class layout (or an array of such types) or a link,
- does not have virtual functions (10.3) and there are no virtual base classes (10.1),
- has the same access control (section 11) for all non-static data members ,
- does not have base classes of non-standard layout,
- either does not have non-static data members in the derived class and no more than one base class with non-static data members, or does not have base classes with non-static data members, and
- does not have base classes of the same type as the first non-static data element.
Since WindowsApi does not violate any of these restrictions, it will be a valid POD class in C ++ 0x. As AndreyT mentions, this is a more generous formulation than C ++ 03.
source share