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