Перегрузка operator& и переносимость
От: SuhanovSergey  
Дата: 25.07.03 20:04
Оценка:
Возникла проблема с переносом проекта из одной реализации C++ в другую (из C++Builder5 на C++Builder6). Проблема заключается в следующем: в проекте интенсивно используется тип vector<TComInterface<Ixxxx> >; TComInterface — это смарт-указатель, у которого определен operator&; в C++Builder6 возникает ошибка компиляции, связанная с тем, что реализация vector-а (STLPort) для получения итераторов применяет operator& к элементам контейнера. В C++Builder5 использовалась другая реализация STL (от Rogue Wave), поэтому таких ошибок не возникало.
Вопросы, собственно, в следующем:
1. кто ошибся? автор STL, который не учёл возможность изменения семантики оператора & у элементов контейнера? Или ошибся я, создав непереносимый код?
2. как малой кровью решить мою проблему?
3. как без reinterpret_cast-ов взять адрес переменной, у типа которой определён operator&.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.