¿Cómo hacer una copia de boost :: filesystem :: directory_iterator?

Sé que esto suena estúpido, pero mira este sencillo ejemplo (el directorio de trabajo debería tener más de un elemento):

#define BOOST_FILESYSTEM_VERSION 3
#include <boost/filesystem.hpp>
#include <cassert>

int main()
{
    using namespace boost::filesystem;
    directory_iterator it("./");
    directory_iterator it_copy = it;
    ++it;
    assert(it_copy != it);
    return 0;
}

it_copy se modifica junto conit! (impulso 1.45) ¿Qué consideraciones podrían conducir a dicho diseño directory_iterator es algo así como ptr inteligente)?

Solo necesito guardar una copia dedirectory_iterator para usarlo más tarde.

Respuestas a la pregunta(1)

Su respuesta a la pregunta