In the documentation it says "Note that x, y, or z cannot be set individually". 

I find myself often doing something like this to change a single element.:

vgl_point_3d<double> a(1.0, 2.0, 3.0);
a.set(4.0, a.y(), a.z());

Is there a reason that that cannot be made into a "setX(const double newX)" function (and similar for y and z)?