Travis Vitek wrote:
[...]
FYI, this issue isn't isolated to the vector container. It exists for most of the iterator/proxy types also. Everywhere you see _RWSTD_OPERATOR_ARROW, and nearly everywhere you see '&*' will have some issue with this. I'm sure that there are other places that the problem happens, but those are the ones that are easily isolated.
Some of these are probably unavoidable. For instance, the code you used in the test case for STDCXX-612: struct S { void operator& () const {}; }; std::reverse_iterator<S*>().operator->(); can't compile because the required Effects of the function are to return &(operator*()); This is a can of worms. We might be able to get our containers to deal with these funky types in some cases as an extension but making the whole library impervious to these kinds of gotchas will most likely be more trouble than it will be worth. Martin