How to run a remote function asynchronously

Ice offers a simple way to run function asynchronously:

::Ice::AsyncResultPtr async_result = proxy->begin_iceInterfaceMethod();
FunctionReturnType result = proxy->end_iceInterfaceMethod(async_result);