Название: MSVC + дека Отправлено: Igors от Июнь 12, 2014, 18:42 Добрый день
"Самый строгий компилятор" (по Вересу) отказывается, падла, компилить это Код Если заменить деку на вектор - все норм, но по задаче так нельзя. Шо делать ? :'( Спасибо Название: Re: MSVC + дека Отправлено: Old от Июнь 12, 2014, 18:57 Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 19:56 Ммм... а он должен такое издевательство компилить? Прошу цитатку из руководства по С++ :)
Название: Re: MSVC + дека Отправлено: kambala от Июнь 12, 2014, 20:18 можно хранить указатели
Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 20:22 Шо делать ? :'( Уж боюсь предлагать:Код
Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 20:25 Аплодисменты m_ax :D
Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 20:26 Или как вариант:
Код
Название: Re: MSVC + дека Отправлено: Alex Custov от Июнь 12, 2014, 20:51 Ммм... а он должен такое издевательство компилить? Прошу цитатку из руководства по С++ :) Класс считается типом сразу после объявления имени. Поэтому возможны необычные конструкции типа Код
Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 21:01 Ммм... а он должен такое издевательство компилить? Прошу цитатку из руководства по С++ :) Класс считается типом сразу после объявления имени. Поэтому возможны необычные конструкции типа Код
Это не совсем верно.. В данном случае, Singleton не зависит от типа X (т.е. внутри него нет переменных X) а значит на момент раскрутки этого выражения class X : public Singleton<X> размер Singleton известен. Любое наследование от специализации Singleton полностью определяется на момент компиляции. Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 21:09 Да, почитал стандарт - действительно.
Однако list и vector спокойно комплируются. Значит проблема в deque. Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 21:13 Однако list и vector спокойно комплируются. Значит проблема в deque. Ничего удивительного, MSVC же :) Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 21:18 Ругается причём на
Код: #define _DEQUESIZ (sizeof (_Ty) <= 1 ? 16 \ Имеется мысль(мб глупая) что класс то объявлен, а вот его размер ещё неизвестен. Что равнозначно Код: class CItem; Ииии... Да, равнозначная ошибка. Как тип класс объявлен, но как объект - нет и получить его размеры не получается. Не вижу где тут противоречие стандарту. Тип объявлен и имеется. Всё верно. PS возражения? Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 21:26 Цитировать Не вижу где тут противоречие стандарту. Тип объявлен и имеется. Всё верно. Это здесь нет противоречий стандарту? Код
Это не только с декой, это с чем угодно работать не будет.. :) Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 21:35 Да, не будет работать с чем угодно, но зато предоставляет понимание проблемы.
А теперь усовершенствуем эту основу. Вот что у нас получается Код: class CItem; Вектор, лист и прочие контейнеры, использующие указатели - компилируются. Deque пытается сразу при объявлении посчитать размер типа CItem. Но на данном этапе он только объявлен и компилятор вообще не в курсе об реализации. Потому размер неизвестен. Вот и весь сказ. Получилось нормальное описание происходящего. Думаю Igors будет доволен :) PS а главное - соответствует стандарту! PPS а иное поведение и компиляция есть отхождение от святого стандарта и его святого компилятора :D Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 21:59 Цитировать PPS а иное поведение и компиляция есть отхождение от святого стандарта и его святого компилятора Да, поэтому святому MSVC всегда можно простить за слегка Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 22:01 Ммм.. Где? Где вы видите кривизну компилятора?
Тут кривизна реализации библиотек STD. Где то я читал про Deque - что ему необходимо знать размер объекта, но был не уверен и потому разбирался. И да - я не отказываюсь от мнения, что MSVC наиболее следующий стандарту компилятор. А вот про его библиотеки ничего не говорю :D Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 22:30 Цитировать Тут кривизна реализации библиотек STD. Вот и я о том же.. Мыши плакали, кололись, но продолжали жевать кактус :) Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 22:56 Начните отделять мышей от кактуса :D
Я std::deque увидел сегодня раз третий в жизни. 1 - лабораторка, 2 - в учебнике, 3 - сегодня :D Хотя я недоволен WinApi, но продолжаю пользоваться Windows. Просто иголки такииие мелкие и несущественные. PS а проблема кстати высосана из пальца и в стандарте не рекомендуется использовать такую бяку. Название: Re: MSVC + дека Отправлено: m_ax от Июнь 12, 2014, 23:24 Цитировать Начните отделять мышей от кактуса :D Да не раз уж.. Тут такая паническая атака начинается.. Так что уж сами, сами.. А я спать пойду) Название: Re: MSVC + дека Отправлено: Alex Custov от Июнь 12, 2014, 23:35 PS а проблема кстати высосана из пальца и в стандарте не рекомендуется использовать такую бяку. ради интереса - где именно? Название: Re: MSVC + дека Отправлено: Bepec от Июнь 12, 2014, 23:47 PS бе бе бе :D
PPS первый час ночи, а я всё ещё стандарт читаю... ППц что со мной стало? :D update: нет там такого, спутал использование одноименных переменных с названием класса :) Название: Re: MSVC + дека Отправлено: Igors от Июнь 13, 2014, 06:05 Ругается причём на А Вы пытались осмыслить что это написано? И как будет работать такая дека?Код: #define _DEQUESIZ (sizeof (_Ty) <= 1 ? 16 \ Уж боюсь предлагать: Решил "в том же стиле" - заменил на QList. Да, с выгодами деки пришлось расстаться :'(Код
Название: Re: MSVC + дека Отправлено: Bepec от Июнь 13, 2014, 08:41 Хз как будет работать :) И судя по отсутствию тем "боже мой дека в MSVC херовая" - она всё же работает и люди довольны :) Ну или по крайней мере не разочарованы :)
Название: Re: MSVC + дека Отправлено: Old от Июнь 13, 2014, 08:58 И судя по отсутствию тем "боже мой дека в MSVC херовая" - она всё же работает и люди довольны :) Такие темы есть и дека в MSVC действительно косячит.Видать, на это просто все забили, т.к. по традиции микрософта - исправлять все равно никто ничего не будет. Название: Re: MSVC + дека Отправлено: Igors от Июнь 13, 2014, 09:06 Хз как будет работать :) И судя по отсутствию тем "боже мой дека в MSVC херовая" - она всё же работает и люди довольны :) Ну или по крайней мере не разочарованы :) Не лучше ли посмотреть кусочек кода (что Вы же и привели) чем опираться на "кто что сказал"? :)В чем понт использовать деку, почему не вектор (изучайте) Название: Re: MSVC + дека Отправлено: Bepec от Июнь 13, 2014, 09:25 Я не вижу смысла в изучении не прикладной задачи на данный момент. Ибо забуду через неделю и толку с этого 0.
|