Внезапно в в этой статье ( "проблема 2" ) Я вижу утверждение, что С++ Standard запрещает использование STL-контейнеров для хранения элементов класса if этот класс имеет перегруженный operator&().
Перегрузка operator&() действительно может быть проблематичной, но выглядит так, как по умолчанию оператор "адрес-из" может быть легко использован через набор грязно-выглядящих приемов, которые используются в boost::addressof() и считаются переносимыми и стандартными компиляторами.
Почему существует перегрузка operator&() для классов, хранящихся в контейнерах STL, в то время как обходной путь boost::addressof() существует?