We demonstrate the flexibility and ease of use of C++ algorithmic differentiation (AD) tools based on overloading through application to numerical patterns (kernels) arising in computational finance. While adjoint methods and AD have been known in the finance literature for some time, there are few tools capable of handling and integrating with the C++ codes found in production. Adjoint methods are also known to be very powerful but have potentially infeasible memory requirements. We present several techniques for dealing with this problem and demonstrate them on numerical kernels that occur frequently in finance. We build the discussion around the mature AD tool dco/c++, which is designed to handle arbitrary C++ codes and be highly flexible; however, the sketched concepts can certainly be transferred to other AD solutions including in-house tools. An archive of the source code for the numerical kernels as well as all the AD solutions discussed can be downloaded from an accompanying website. This includes documentation for the code and for dco/c++. Trial licences for dco/c++ are available from Numerical Algorithms Group Ltd.