I guess there are a few ways to do it.
You could manually do the sift-up operation and basically carry the value to the top of the heap, pop it and then push it back on the heap with its new value.
You could update the value and do a make_heap again on the heap, assuming that make_heap is designed to be efficient when the heap is "almost a heap" already.
You could mark the node that is in the heap with some flag to indicate that it is no longer valid, then push a new element with the new value on the heap. Then, every time you pop an element from the heap you check the flag for validity and ignore any invalid element.
Otherwise, you could use another heap implementation that does have update functionality. For example, Boost.Graph library includes, in its details (boost/graph/detail folder) a d_ary_heap.hpp header which implements a D-Ary Heap Indirect implementation which does have an update function that is logN. This is used in the BGL implementation of Dijkstra and A*, which you could use directly as well instead of implementing your own.