Thank you, Mael! That was exactly what I was looking for. I didn't understand how masks worked. For anyone else's reference, here is a simple midpoint subdivision mask for CGAL's Surface_mesh class. I did away with the templating for my own needs, but obviously that extra generalizability can be worked back in. All this subdivision does is subdivide triangle faces into 4 equal sub-triangles. There is no interpolation on the vertices whatsoever.