
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This problem seems to arise from the expansion of the BOOST_SCOPED_ENUM macros in Boost.Filesystem. In <boost/filesystem/v3/operations.hpp> line 115, we have: BOOST_SCOPED_ENUM_START(copy_option) {fail_if_exists, overwrite_if_exists}; BOOST_SCOPED_ENUM_END In g++ 4.5.1, this expands to the following when compiling without - --std=c++0x: struct copy_option { enum enum_type {fail_if_exists, overwrite_if_exists}; }; However, when compiling with -std=c++0x, it expands to: enum class copy_option {fail_if_exists, overwrite_if_exists}; The macro BOOST_SCOPED_ENUM is used in the function copy_file; without - --std=c++0x, the forward declaration for boost::filesystem3::detail::copy_file in operations.hpp (line 138) expands to: void copy_file(const path& from, const path& to, copy_option::enum_type option, system::error_code* ec=0); With --std=c++0x, however, it expands to: void copy_file(const path& from, const path& to, copy_option option, system::error_code* ec=0); Thus creating our problem - if you've compiled Boost.Filesystem without turning on C++0x support, and then you turn on C++0x support in a program that links to Boost.Filesystem, the forward declaration of Boost.Filesystem functions using BOOST_SCOPED_ENUM to expand their parameters will expand incorrectly. - - Bryce Lelbach -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkx1zxcACgkQO/fqqIuE2t6LmQCg6jS8hflO2haqVFUeLTM19zTt vHkAoMtL/ETez1jbIwtBrPct/f9v8aEO =BcGm -----END PGP SIGNATURE-----