If C++ had GarbageCollection, a FunctionObject could be used to give C++ true higher-order functions (though with an ugly syntax). One could create and return a FunctionObject (or a reference/pointer to same) in a HigherOrderFunction, use it as necessary, and let the GC dispose of it.
Without GC, though; this use becomes problematic as the user must then manually free the function object. Given the typically usage patterns of function objects created in such fashion (they often get passed around, or stuffed in a data structure, and die well after they are created), manual reclaimation of these is a RoyalPain (i.e. error-prone and likely to leak memlry). Workarounds:
Copy them by value. Works if the function object has a small amount of state; but for larger function objects this becomes expensive.
Use only statically-alocated function objects. This prevents true higher order functions (which can return an infinte number of different functions, depending on the arguments to the higher-order function)
Use the methods of FC++ (see FunctoidsInCpp) where the internals do contain reference counting.