this constructor should not leave the `z` undefined. We could use `BOOST_STATIC_ASSERT(dim == 2);` instead.