To follow up on the matter of Boost.Geometry, I have put some of my efforts
here.
sf::Vector2f is adapted to model the Point concept, very simply with the macro BG provides.
sf::FloatRect is
adapted to model the Box concept. (the macro can't be used out of the box, as BG represents the Box in terms of bottom left and top right corner, rather than top left and size)
Already by doing these two, it is possible to insert the FloatRect into BG's rtree (a spatial indexing structure like a quad tree). An example of using the tree to determine collisions can be seen in this
rudimentary invaders prototype.
The rest is unfinished, as an ideal design is not clear. I think that rather than registering SFML classes as any particular geometry, there should be lightweight 'views' that are registered instead, so that for example a sf::Shape may be viewed as either a filled or unfilled polygon. A sf::VertexArray could be a polygon but also just a linestring, etc
One neat free side-benefit is that registered geometries can be output in pretty text or SVG. For example
sf::FloatRect rect(0.f, 10.f, 10.f, 10.f);
std::cout << bg::wkt(rect) << '\n';
gives
POLYGON((0 0,0 10,10 10,10 0,0 0))