boost::filesystem::renommer: Impossible de créer un fichier existe déjà

Je suis le renommage d'un fichier à l'aide de boost::filesystem, et parfois le fichier cible existe. Selon le coup de pouce de la documentation ici:

http://www.boost.org/doc/libs/1_42_0/libs/filesystem/doc/reference.html#Non-member-functions

modèle
void rename(const Path1& from_p, const
Path2& to_p); Nécessite:
Path1::external_string_type et
Chemin2::external_string_type sont les
même type.

Effets: Renomme from_p à to_p, comme si
par POSIX rename().

Postconditions: !existe(from_p) &&
existe(to_p), et le contenu et
les attributs du fichier d'origine
nommé from_p sont par ailleurs inchangé.

[Note: Si from_p et to_p résoudre à
le même fichier, aucune action n'est prise.
Sinon, si to_p correspond à un
fichier existant, il est supprimé
. Un
lien symbolique lui-même renommé,
plutôt que le fichier il se résout à
d'être renommé. -- fin de la note]

(mon emphase)

En testant ce code compilé via MS Visual Studio 2008 sur XP SP3, le renommer jette boost::filesystem::filesystem_error avec le message:

Ne peut pas créer un fichier existe déjà

Je note ce point a été soulevé dans un rapport de bug:
https://svn.boost.org/trac/boost/ticket/2866

... mais prétend être fermé en Boost 1.41.0 et je suis d'utilisation de Boost 1.42.0.

Je fais quelque chose de mal ici ou devrais-je revenir à std::renommer?

Je n'ai pas testé sur Linux, donc ne sais pas si le problème existe aussi.

OriginalL'auteur Simon Elliott | 2010-07-01