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)?