The OpenMesh library provides a few tools for uniform and adaptive subdivision:
The subdividers directly work on an OpenMesh. The following example shows how to use them: