Хочется STL подобного - страница 2

 
Dmitry Fedoseev:
А что, пузырьковая сортировка это STL подобно? Вот бы я такое отмочил, вот бы тут было... Но членам клуба можно? Да?

STL подобно - имеется в виду интерфейс, не 100%, конечно. Ну и пузырьковой уже нет, хотя использовал именно её (массив был не слишком большим), но раз опубликовал, то решил заменить более оптимальным алгоритмом.

 
Vict:

оказывается, что можно даже так:

и не будет никакой неопределённости. Я не знал что так можно, в плюсах ошибка. Ну и х.з. насколько можно полагаться на это ...
Нет, нельзя.  Попробуйте передать туда переменную
 
Alexey Navoykov:
Нет, нельзя.  Попробуйте передать туда переменную

Кушает, без ошибок.

 
Vict:

Кушает, без ошибок.

С чего это вдруг. Никогда не кушало.

p.s.  А, не, я чуток перепутал, там const не кушает:

   S s;
   const int a=0;
   s.f(a);  // Ошибка
 
Vict:

оказывается, что можно даже так:

и не будет никакой неопределённости. Я не знал что так можно, в плюсах ошибка. Ну и х.з. насколько можно полагаться на это ...

Формально там нет неопределённости, потому что число 5 нельзя передать ссылке:

void f( int& ) {}
void OnStart()
{
        f( 5 ); //'5' - parameter passed as reference, variable expected
}

Но это не значит что все нормально. Например это:

void f( const int  ) {} //(1)
void f( const int& ) {} //(2)
void OnStart()
{
        int i = 5;
        f( i ); //нормально ???
}

компилируется без ошибок. Неоднократно обращал на это внимание Разработчиков, но все по прежнему. И это при том что MQL позиционируется как более строгий язык, заботящийся о пользователях (избыточные предупреждения и т.п.)

 
Dmitry Fedoseev:
А что, пузырьковая сортировка это STL подобно? Вот бы я такое отмочил, вот бы тут было... Но членам клуба можно? Да?

в курсе как расшифровывается STL? нет? так погугли.

Да, членам клуба имеющих мозг можно, а вот у тебя отмочить вряд ли получится ))

Sergey Dzyublik:

Контейнер для любого типа данных можно реализовать стандартными средствами MQL (с помощью шаблонов) без применения макросов.

можно-то оно можно, вопрос какого качества и с какими допущениями.

например я хочу контейнер какой-нибудь структуры встроенного типа. а у нее (тадам!!) запрещено копирование и нельзя использовать указатели.

Так для классов, структур и указательной будет проверяться наличие реализованных операторов сравнения и равенства, а так же функций Equals, Compare.

как? насколько я помню sfinae в mql нету, а реализация через интерфейсы требует множественного наследования.

 
TheXpert:

например я хочу контейнер какой-нибудь структуры встроенного типа. а у нее (тадам!!) запрещено копирование и нельзя использовать указатели.

Вроде, разрешено.

 
fxsaber:

Вроде, разрешено.

может доделали, я на такое натыкался

со структурами есть еще одна проблема - из-за отсутствия ссылок и указателей нельзя изменить элемент структуры в контейнере извне.

 
A100:

Например это:

компилируется без ошибок. Неоднократно обращал на это внимание Разработчиков, но все по прежнему. И это при том что MQL позиционируется как более строгий язык, заботящийся о пользователях (избыточные предупреждения и т.п.)

А зачем обращать внимание разработчиков? Разве это может причинить какие-то проблемы?  Если в коде имеется такая перегрузка, то очевидно обе функции имеют идентичный смысл, и сделаны для гибкости.  Зачем обрезать такую возможность? Занудства ради?  В MQL и так слишком мало гибкости и простора для манёвра.

Кстати насчёт "более строгого языка, заботящегося о пользователях" - это очень спорно :)  Чего стоит например такое:

class A { };

A a;
A *b= a;  // Типа всё нормально
 

Мне лично все равно что там написано в библиотеке. Главное чтоб работала правильно и быстро. Я не так часто и много пишу коды, чтобы самому писать себе библиотеки. А разобраться как пользоваться ну на мой взгляд гораздо проще, чем самому придумывать их.
Вообщем больше библиотек хороших и разных!