In boost v1.47, filesystem\v3\src\path.cpp, inside function m_path_iterator_increment, on line 654,

It should be:
  it.m_element.m_pathname = preferred_separator;

Instead of 
  it.m_element.m_pathname = separator;

Reason:
In below sample code

  boost::filesystem::path new_path;
  for (fs::path::iterator i=path.begin();i!=path.end();i++)
    new_path/=(*i);

On windows when iterating a path using above code, line 654 incorrectly appends / instead of \ after drive letter. 

For example, 
  D:\path\file
Becomes,
  D:/path\file

I have created a trac ticket for the same: https://svn.boost.org/trac/boost/ticket/5989

SG