Ошибки, баги, вопросы - страница 1692

 

Два одинаковых по содержимому исходника занимают разное количество байт (в два раза отличаются).

Похоже, там какие-то уникодные заморочки в определенный момент произошли.

В общем, как мне сделать, чтобы большой файл стал занимать в два раза меньше? При этом, чтобы текст исходника остался неизменным.

 
fxsaber:

Два одинаковых по содержимому исходника занимают разное количество байт (в два раза отличаются).

Похоже, там какие-то уникодные заморочки в определенный момент произошли.

В общем, как мне сделать, чтобы большой файл стал занимать в два раза меньше? При этом, чтобы текст исходника остался неизменным.

Скопировал содержимое большого файла в Notepad и сохранил в новый файл. Стал в два раза меньше.

А как заставить metaeditor не создавать "толстых"? 

 
fxsaber:

А как заставить metaeditor не создавать "толстых"? 

Никак. Каждый раз новый размер.
 
fxsaber:
Вы бы запустили сначала. Ошибка ТОЛЬКО здесьВсе вызовы до этого проходят без проблем.

А вот это - действительно странно. В плюсах здесь ошибка во всех трёх вызовах.

Это из другой оперы.

Да нет, всё из той же. Посмотрел вызовы методов в дебаггере: закомментировал последний вызов в вашем примере, поставил точки останова на обоих методах класса и запустил отладку. С метода void func(const int&) точка останова была удалена, т.е. компилятор выкинул этот метод, поэтому неоднозначность была устранена.  А если вызывать функцию с константным аргументом, тогда, видимо, компилятор метод со ссылкой не удаляет, и в результате - неразрешимая перегрузка... Как-то так. В любом случае, в С++ ваш код - ошибочный.

 

Sergei Vladimirov:

В любом случае, в С++ ваш код - ошибочный.

В mql есть дополнительные замуты со ссылками. В любом случае мне не нравится поведение в коде сверху.

void f(const int& x)
{}

void OnStart()
{
   f(5); // ошибка
}
 
Sergei Vladimirov:

А вот это - действительно странно. В плюсах здесь ошибка во всех трёх вызовах.

В данном случае не хотелось бы совсем, чтобы были изменения в сторону С++.
 
Комбинатор:

В mql есть дополнительные замуты со ссылками. В любом случае мне не нравится поведение в коде сверху.

void f(const int& x)
{}

void OnStart()
{
   f(5); // ошибка
}
Здесь ошибка корректна.
 
fxsaber:
В данном случае не хотелось бы совсем, чтобы были изменения в сторону С++.

А вот это уже - вопрос холиварный дискуссионный. Я вам просто ответил, "где собака порылась".

Поведение, кстати, от С++ не отличается, просто если оставить только первые два вызова, то компилятор выкидывает одну из функций, поэтому неопределённость исчезает. Но это же всё равно ошибка, просто автоматически исправляемая компилятором. 

 
fxsaber:
Здесь ошибка корректна.
Да, но в моем понимании ее не должно быть вообще )
 
Sergei Vladimirov:
А вот это уже - вопрос холиварный дискуссионный. :) Я вам просто ответил, "где собака порылась".

Да нет там на самом деле никакой собаки. Приоритет в overload можно поставить в компиляторе, как это сделали разработчики с первыми двумя вызовами.

Причина обращения: