If your array contains raw pointers, they will be automatically dereferenced during heapification. Therefore, your array will be heapified by the values being pointed to, rather than the pointers' values. The auto-dereferencing behavior does not occur with smart pointers.