Boost logo

Boost Users :

From: Victor A. Wagner Jr. (vawjr_at_[hidden])
Date: 2004-10-20 15:34:16


At Wednesday 2004-10-20 04:57, you wrote:

>>>I appear to have made a small error, the warning occurs 'whenever'
>>>resize is called.
>>>
>>>So the problem now is:
>>>
>>>Every time the resize function of multi_array is called, a warning is
>>>generated in the use of MSVC++ 6.0's implementation of std::swap.
>>>
>>>The problem is solved by commenting out the line
>>>swap(this->allocator_,new_array.allocator_);
>>>in multi_array.hpp
>>In general, I'd say this is a dangerous thing to do, particularly because
>>I don't know how std::swap is implemented in your compiler.
>>It seems like the compiler is complaining about an unused variable in the
>>implementation, which does not mean that the allocators are not being swapped.
>>
>>>This hasn't incurred an execution problem under debug or release. Could
>>>someone explain this? What is the purpose of this line, and why wasn't
>>>it swapping the allocators?
>>
>>The resize operation preserves as much of the contents of the original
>>array as possible. To do so, it must allocate a new portion of memory
>>and copy the salvageable elements to it. The algorithm essentially
>>builds a new array of the right size and swaps the guts of the original
>>array out.
>
>The MSVC++ 6.0 compiler implements swap like so:
>
>template<class _Ty> inline
> void swap(_Ty& _X, _Ty& _Y)
> {_Ty _Tmp = _X;
> _X = _Y, _Y = _Tmp; }
>
>The unreferenced local variable warning is referring to _Tmp. Since _Tmp
>is required to swap the variables, does this not indicate that this
>particular use of the swap function is redundant?

Looks more to me like just one more bug in an old (and should be retired),
out of date, and non-conformant compiler.

>Thanks again,
>Ewan
>
>
>_______________________________________________
>Boost-users mailing list
>Boost-users_at_[hidden]
>http://lists.boost.org/mailman/listinfo.cgi/boost-users
>

Victor A. Wagner Jr. http://rudbek.com
The five most dangerous words in the English language:
               "There oughta be a law"


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net