Ошибки, баги, вопросы - страница 1730
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В С++ тоже неоднозначность типа: const T const
Но выход есть - переставить const вправо
С++ компилирует без ошибок (у учетом разницы синтаксиса)Но логически же странно получается, когда "const A" и "A const" обозначают одно и то же.
Возможно, что "A const *" - это константный указатель не на константный объект.
Похоже, что именно так. Т.к. такая конструкция имеет место быть
void f( const A const * const & a[] ) {}
Нельзя менять указатель, нельзя менять по ссылке и нельзя менять объект(-ы).
С точки зрения получения быстрого кода, такая конструкция может сделать нужную подсказку компилятору?
А это нормально, что из-за одного символа копирайта (который в принципе является интернациональным и есть во всех кодировках, несмотря на то что его код больше 127) размер файла увеличивается в 2 раза...
void f( const A const * & a[] ) {}
менять элементы нельзя, а вот изменять размер массива - вполне.
Прикольно, получается, что методы могут выглядеть так
class B
{
const A const * Method( const A const * const & a[] ) const
{
return(a[0]);
}
};
Возможно, что "A const *" - это константный указатель не на константный объект.
Если не шаблон, то "A const *" равнозначно "const A *", а если шаблон - то по ситуации
{
public:
int i;
};
void f( A const * & a[] )
{
a[0].i = 1; // 'i' - constant cannot be modified
}
Конкретно это - исправили в будущем https://www.mql5.com/ru/forum/1111/page1749#comment_2892563
Если не шаблон, то "A const *" равнозначно "const A *", а если шаблон - по то ситуации (в С++ )
Интересно, что в такой конструкции
void f( const A const * & a[] ) {}
менять элементы нельзя, а вот изменять размер массива - вполне.
Серьезно? Жесть, не должно быть так.
Тогда равнозначности не должно быть в Вашем утверждении