
on Thu Aug 14 2008, Niels Dekker - mail address until 2008-12-31 <nd_mail_address_valid_until_2008-12-31-AT-xs4all.nl> wrote:
The boost::swap utility forwards its task to a helper function, ::boost_swap_impl::swap_impl. [...] I think it's preferable to remove the top-level namespace, "boost_swap_impl", and move the helper function into the boost namespace. For instance within a new nested namespace, boost::swap_impl_detail.
Joseph Gauterin wrote:
I'm not sure about that - I tried removing it after we removed the ADL barrier and it caused a stack overflow (MSVC8) on some of the tests.
That looks very, very weird to me... And now I see, I get a stack overfow as well, after moving boost_swap_impl::swap_impl to the boost namespace, within my local copy of trunk/boost/utility/swap.hpp. I tried MSVC9 (SP1 not yet applied).
My local copy of trunk/libs/utility/swap/test/primitive.cpp says:
Running 1 test case... unknown location(0): fatal error in "test_main_caller( argc, argv )": stack overflow
I'm clueless now. How could moving boost_swap_impl::swap_impl to the boost namespace possibly cause a stack overflow? Is it a known MSVC issue?
Sounds like an infinite recursion to me. -- Dave Abrahams BoostPro Computing http://www.boostpro.com