Short version: Types in C++ are:
- Object types: scalars, arrays, classes, unions 
- Reference types 
- Function types 
- (Member types) [see below] 
- void
 
Long version
Member types work like this. A member type is of the form T::U, but you can't have objects or variables of member type. You can only have member pointers. A member pointer has type T::* U, and it is a pointer-to-member-object if U is a (free) object type, and a pointer-to-member-function if U is a (free) function type.
All types are complete except void, unsized arrays and declared-but-not-defined classes and unions. All incomplete types except void can be completed.
All types can be const/volatile qualified.
The <type_traits> header provides trait classes to check for each of these type characteristics.