The VS documentation states
Half the size of a pointer. Use within a structure that contains a pointer and two small fields.
What, exactly, is this type and how is it used, if ever?
The VS documentation states
Half the size of a pointer. Use within a structure that contains a pointer and two small fields.
What, exactly, is this type and how is it used, if ever?
I found this article on Intel's site, and it they suggest using it in a context where you have a class with many pointer members, along with a 32 bit offset to get the actual address, to cut down on data bloat of a class. The article specifically talks about the Itanium platform because it uses 64 bit pointers instead of 32 bit, but I assume the problem/solution to the problem would be the same on any system using 64 bit pointers.
So in short, it seems to suggest that it can be used if you, for example, wish to reduce the memory footprint of a class?
Note: Anonymous structs are not standard, but MSVC takes them:
union
{
int * aPointer
struct
{
HALF_PTR lowerBits;
HALF_PTR upperBits;
};
} myvar; //You can be assured this union is sizeof(int *)
If you're thinking they're not too terribly useful, you would be right.
Use within a structure that contains a pointer and two small fields.
This means that in the following structure, no padding is required:
struct Example {
void* pointer;
HALF_PTR one;
HALF_PTR two;
};
Of course, this is only relevant if the size of HALF_PTR
(32 bits on a 64-bit system, 16 bits on a 32-bit system) is sufficient to hold the intended values.