Согласно Стандарту C ++ 03 (23.1 / 3) только копируемые объекты класса могут храниться в контейнерах STL. Копируемый объект описан в 20.1.3 и требует, чтобы "&" давало адрес объекта.
Теперь предположим, что у меня есть этот класс:
class Class {
public:
Class* operator&()
{
//do some logging
return this;
}
const Class* operator&() const
{
//do some logging
return this;
}
//whatever else - assume it doesn't violate requierements
};
Можно ли законно хранить объекты этого класса в контейнерах STL?