Объясните тогда какой смысл Вы вкладываете указывая ниже const - просто чтобы было?
Это вопрос к разработчикам стандартной библиотеке а не ко мне. Что бы использовать Compare к сожалению необходимо его переопределить согласно его сигнатуре, т.е. использовать const. Иначе стандартные алгоритмы поиска, сортировки и вставки работать с моими объектами не будут. Но мои объекты не содежат const и в силу их устройства не могут содежать const. Так спрашивается, почему я не могу использовать стандартные алгоритмы хранения только потому что мне не доступен этот чертов const?!!!!
не означает, что класс A должен иметь только const методы. Оно означает только, что в самой f() могут быть вызваны только const методы
Я как бы в курсе. Проблема в том что Compare виртуальный и фактически является МОЕЙ ЛИЧНОЙ функцией сравнения. В СВОЕЙ функции я раньше имел право использовать не статические методы, теперь меня этой возможности лишили.
Свой Compare без const использоват не могу, потому что он не вызовется в алгоритмах стандартной библиотеки.
Ограничение const накладывает внешняя функция и это ее право, но она не в праве накладывать ограничения на архитектуру сторонних объектов.
Объясните тогда какой смысл Вы вкладываете указывая ниже const - просто чтобы было?
Объясните тогда какой смысл Вы вкладываете указывая ниже const - просто чтобы было?
Конструктор А не статический, попытка его вызвать естественно вызывает ошибку:
Вообще-то это правильная инициализация. Статик в классе не имеет никакого отношения к объекту который статик.
И то что это не компилится действительно на баг похоже.
Fleder, спасибо за разъяснение! Ведется ли авторами проекта чейнджлог по MetaEditor'у и языку MQL?
Fleder, спасибо за разъяснение! Ведется ли авторами проекта чейнджлог по MetaEditor'у и языку MQL?
Так спрашивается, почему я не могу использовать стандартные алгоритмы хранения только потому что мне не доступен этот чертов const?!!!!
Объявление
не означает, что класс A должен иметь только const методы. Оно означает только, что в самой f() могут быть вызваны только const методыВообще-то это правильная инициализация. Статик в классе не имеет никакого отношения к объекту который статик.
И то что это не компилится действительно на баг похоже.
Объявление
не означает, что класс A должен иметь только const методы. Оно означает только, что в самой f() могут быть вызваны только const методыЯ как бы в курсе. Проблема в том что Compare виртуальный и фактически является МОЕЙ ЛИЧНОЙ функцией сравнения. В СВОЕЙ функции я раньше имел право использовать не статические методы, теперь меня этой возможности лишили.
Свой Compare без const использоват не могу, потому что он не вызовется в алгоритмах стандартной библиотеки.