Thanks for sharing!
According to your tutorial,
smoothPath() seems to remove intermediate nodes that lie on a line between two other points, i.e. they minimize the number of points, correct?
And does your A* implementation always consider 8 directions, or is it also possible to check only horizontally and vertically (4 directions)?
By the way, if you plan to extend your library, you should check out
LEMON. They provide quite optimized algorithms for a variety of graph-related problems and they also have a very nice API (as opposed to Boost.Graph). It might be worth having a look to not re-invent the wheel