In the examples he gave it would seem to be the same. He's not doing anything special with the return value. I guess he should show us an example as to why he needs the Cvar class.
His exampe requests the value of runningSpeed from the ConfigMap object into the speed object and prints it. After updating the runningSpeed property of the ConfigMap object, the speed object is printed again with the new value.
I think the main point was so he can overload << & >>. I don't know why one would need to do that though, since I could just do the following to get the same result.
int speed = config.Get<int>("speed", 1);
cout << speed;
You don't need Cvar since you are using boost::any. If you didn't want to use boost at all then you would need a base class like Var that isn't templated and then a derived class like Cvar that is templated and stores your data and in your Config class store a map of Var pointers but create Cvar objects. This way you don't have to use boost::any which from what I've seen is a lot of code and probably overkill for what you need in this specific example.
If you look at his example usage, you'll see that the Cvar object is a reference to the actual value stored in the ConfigMap object. When he change the value of some parameter in the ConfigMap object, all the Cvar handles to that parameter also change.
Not saying the solution is fine as it is, but returning a int is not equivalent to what his class is doing.
The code looks fine and the result looks reasonable given the parameters. It looks like the vertices are on the order of about 1 units apart, so a 3 unit radius is not very large selection; therefore, the center-offset is large in comparison to other values because the radius is relatively small.