Hey Bram, thanks for trying out PolyVox. I'll put my responses here in case they are useful to other people who come across this blog.
Firstly I'm glad it works. We test with VS and GCC and aim to keep it warning free, so we'll address the Clang warnings. Overall the code is indeed kept tidy and clean though the heavy use of templates can make it harder to understand.
When you create a surface extractor object you can pass a 'region' parameter to control which part of the volume it will extract. You can use this to generate multiple non-overlapping meshes and then only regenerate the ones which have changed. You can just create a MarchingCubesSurfaceExtractor on the stack, call it's execute() method, and then let it get destroyed. To be honest it does not need to be a class - long term we will replace it with a simple function 'extractMarchingCubesSurface()' or something.
Important note - the blocks which you use to represent your volume do not need to match the regions which you extract. PolyVox will seamlessly extract across block boundaries if you wish. 32x32x32 is a good size for the blocks stored in memory, but you might want your meshes to be 16x16x16 (probably on mobile) or 64x64x64. PolyVox will handle this fine. You can even store your data in a RawVolume (so not using blocks) and still just extract certain regions.
Let me know if you have any more questions :-)