http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36861
--- Comment #40 from Ion GaztaƱaga <igaztanaga at gmail dot com> 2011-01-19 16:07:01 UTC --- (In reply to comment #39) > The point with the case in question is that a pointer to a global > object is computed relative to the address _of an automatic variable_. > I hope no standard will ever allow that ;) It might be a simple > oversight (and thus bug) in Boost AVL though. Is not an oversight, it's a basic feature to build easy relative addressing to be used in shared memory and memory mapped files shared between several processes. A pointer only stores the distance between the "smart pointer" and the pointee, so it can be mapped in different addresses in several processes. Support for automatic storage smart pointers is needed just to support iterators that could be stored in shared memory (thus, storing smart pointers in shared memory) and also be used by programmers in a loop (automatic storage). Until now, this illegal scheme was working in all known compilers (although outside the standard, I agree). Since the standard does not support shared memory, if someday shared memory support is added to the standard, it will surely require some changes to support this widely used relative addressing. Until then, I agree, this bug report is invalid. The only issue I would like to know is if this relative addressing scheme for automatic variables can be used with GCC with some kind of existing annotation, anything that could force that automatic variable to have an address that could be used to point to shared memory elements. Ion