Двач.hk не отвечает.
Вы видите копию треда, сохраненную 7 августа 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
20 Кб, 360x193
35 Кб, 295x399
Оффициальный™ традиционный® C++ тред #37 #786424 В конец треда | Веб
Возвращение Бьерна
Жаваблядям - капут
Питонисты рыдают
И дотнет не спасут
Тьма нахлынет за тьмою
Из восставших степей
Морем мора накроет
Стадо жирных свиней
Их телами украсит
Все столбы фонарей
Кровью лиспер окрасит
Их отравленный Рейн
Вопреки Откровенью
Вряд ли выживет треть
Языкам их - забвенье
И их паттернам - смерть
На потеху сиблядям
Их прогресса плоды
Нет того, что могло бы
Спорить с мощью орды


Старший брат: >>776344 (OP)
Предыдущий: >>780630 (OP)

TL;DR

Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать?
Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли?
A: Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.

Памятка ньюфагу

  • Вопросы по синтаксису идут на хуй
  • Лабы идут на хуй
  • "Как мне сделать Х на чистых крестах без библиотек" идут на хуй
  • Все идут на хуй
  • Хейтер сосет члены на пару со своей мамашей

Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.


FAQ

Мотивация

Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:

  • Скорость
    C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором.
  • Мощь
    C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искусственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства.
  • Популярность
    C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.

Q: Но он же давно устарел!
A: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".

Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполне возможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.

Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Эти фичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.


Литература

Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:

  • Для нюфань

    Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr
    Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela
    Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u

  • Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:


    Автор(ы) Название Год Ссылка
    Герберт Шилдт C++. Базовый курс 2010 https://goo.gl/qMLAFl
    Роберт Лафоре Объектно-ориентированное программирование в C++ 2004 https://goo.gl/QvjR6x

  • Best practices

    Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все:


    Автор(ы) Название Год Ссылка
    Скотт Мейерс Эффективное использование C++ 2005 https://goo.gl/wsDXGz
    Скотт Мейерс Наиболее эффективное использование C++ 1996 https://goo.gl/tHa0tO
    Скотт Мейерс Эффективный и современный C++ 2015 https://goo.gl/Im8VYQ
    Скотт Мейерс Эффективное использование STL 2002 https://goo.gl/QtS8Dc
    Герб Саттер и Андрей Александреску Стандарты программирования на языке C++ 2005 https://goo.gl/Cpk4YR

  • Проектирование

    Следует пролистать все перед переходом от лаб к написанию настоящего софта.
    Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:


    Автор(ы) Название Год Ссылка
    Ален Голуб Веревка достаточной длины, чтобы выстрелить себе в ногу 2001 https://goo.gl/fBmuxp
    Джеймс Коплиен Программирование на C++ 2005 https://goo.gl/Y1WGdU
    Андрей Александреску Современное проектирование на C++ 2002 https://goo.gl/e1V5BC

    Ахтунг!
    Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).

  • Справочники

    Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Язык программирования C++ 2013 https://goo.gl/XkAiOX (на ангельском)
    Бьерн Страуструп Язык программирования C++ 2010 https://goo.gl/iZBDiV <устарело>

    Кроме того, на ангельском доступны стандарты C++11, C++14, а также последняя версия черновика стандарта C++17.

  • Тонкости языка

    Книги для тех, кто возлюбил кресты всей душой и желает углубиться в детали:


    Автор(ы) Название Год Ссылка
    Герб Саттер Решение сложных задач на C++ 2002 https://goo.gl/iWaa6S
    Герб Саттер Новые сложные задачи на C++ 2004 https://goo.gl/4nn512
    Бьерн Страуструп Дизайн и эволюция C++ 1994 https://goo.gl/FqbPwo (для легкого чтения)

  • Отдельные аспекты

    Читать по необходимости:


    Автор(ы) Название Год Описание Ссылка
    Энтони Уильямс Параллельное программирование на C++ в действии 2012 Про использование std::thread
    и других фич последних стандартов
    для разработки многопоточных приложений
    https://goo.gl/qJfBkD
    Николаи Джоссатис C++. Стандартная библиотека 2012 Детальный справочник по STL и
    остальным частям стандартной библиотеки
    https://goo.gl/PEyiMH
    Дэвид Абрахамс и Алексей Гуртовой Шаблонное метапрограммирование на C++ 2009 "Мы встроили в шаблоны C++ функциональный
    язык программирования, чтобы ты мог
    программировать, пока программируешь"
    https://goo.gl/isSt7j
    Дэвид Вандевурд и Николаи Джоссатис Шаблоны C++. Справочник разработчика 2003 После прочтения этой книги тебя не приведут
    в ужас даже исходники boost::MPL
    https://goo.gl/0M4NpG
    Роберт Седжвик Фундаментальные алгоритмы на C++ 2001 Стандартный курс алгоритмов с примерами
    на C++. Для его чтения не нужно знать
    мертвые языки, в отличие от этого вашего Кнута
    https://goo.gl/4jwxSl (части 1-4),
    https://goo.gl/yDuQgG (часть 5)


Другие обучающие материалы

Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три

Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:

  • Годный блог, в котором все просто и понятно тян не нужны кококок борщ
  • Блог с хорошо расписанными фичами новых стандартов
  • Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
  • Блог Герба Саттера (на ангельском)
  • Блог Скотта Мейерса (на ангельском)
  • Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
  • Куча других блогов (на ангельском)
  • Большой FAQ по C++ (на ангельском)
  • Видео с CppCon (на ангельском)


Софт и библиотеки

Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:


Платформа Название Описание Ссылка
Windows Microsoft™ Visual Studio® Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда https://goo.gl/qgAAc6 (русская версия) или
https://goo.gl/WIPW9L (ангельская версия)
Все CodeLite Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM http://codelite.org/,
"sudo aptitude install codelite codelite-plugins"
для установки под *nix
Все CLion IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует https://www.jetbrains.com/clion

Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.

Разумеется, установка IDE вовсе не обязательна. Ты можешь использовать текстовый редактор в связке с каким-нибудь компилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.

Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:

  • Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio
  • Более навороченный, но коммерческий аналог
  • Встроенный в clang статический анализатор
  • Детектор утечек для Visual Studio. Предельно прост в прикручивании
  • На порядок более мощная и сложная утилита для *nix, служащая тем же целям
  • Гугловские утилиты для контроля корректности кода
  • Гугловский фреймворк для автоматизации тестирования

Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.

Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:

  • boost

    Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.

    Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.

    Литература:


    Автор(ы) Название Год Ссылка
    Ариндам Мукерджи Learning Boost C++ Libraries 2015 https://goo.gl/b0gPN1 (на ангельском)

  • Qt

    Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.

    Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.

    В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.

    Литература:


    Автор(ы) Название Год Ссылка
    Макс Шлее Qt 5.3. Профессиональное программирование на C++ 2015 https://goo.gl/aZ66gK
    Макс Шлее Qt 4.8. Профессиональное программирование на C++ 2012 https://goo.gl/Slb1In (книга) +
    https://goo.gl/toUDWc (исходники примеров)
    Марк Саммерфилд Qt. Профессиональное программирование 2011 Только Qt 4.х:
    https://goo.gl/qpkZFm (книга) +
    https://goo.gl/LIIECh (исходники примеров)

  • Другие хорошие библиотеки

    Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:

    • libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году)
    • SFML - работа с графикой и аудио
    • FLTK - графические интерфейсы

    И еще куча библиотек на любой вкус.


Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.


#2 #786443
C++ для быдла
>>786466>>786476
#3 #786466
>>786443
1C для илиты
#4 #786476
>>786443
Для илитки, высокомерных задротов, которые не смогли в Haskell.
#5 #786548
>>786424 (OP)

>CodeLite


Почему он, а не Code::Block, помню еще несколько лет назад он был самым юзабельным из опенсорса.
>>786554>>791379
#6 #786554
>>786548
Автодополнение. Количество плагинов.
>>791873
#7 #786559
>>786440
Формально - никак. Стандарт ничего вообще не гарантирует о доменах для плавающих чисел, поэтому может не влезать в обе стороны. Единственный корректный вариант - каждый раз вручную сравнивать с INT_MAX или типа того. Но вообще, если у тебя возможны настолько большие числа, то проблемы будут не только с double, а вообще с любыми операциями из-за постоянных проверок на переполнение, поэтому лучше сразу прикрутить какую-нибудь библиотеку длинной арифметики и не велосипедить хуйни.
>>786599>>786647
#8 #786598

>CodeLite


>Code::Block


Вы два мудака, как же вы заебали с продвижением этого говна в каждом треде. Запомните:

Серьезные люди в продакшене юзают:
- MS VS
- Eclipse CDT
- XCode
- Qt Creator
- CLion
- Vim/Emacs

Всем, кто советует иное, можете плевать в лицо без раздумий.
>>786685>>809720
#9 #786599
>>786559

>Стандарт ничего вообще не гарантирует о доменах для плавающих чисел, поэтому может не влезать в обе стороны.


Щито? Что такое домены?
>>786700
sage #10 #786647
>>786559

> Стандарт ничего вообще не гарантирует о доменах для плавающих чисел


У тебя какой-то свой стандарт.
>>786700
#11 #786685
>>786598
два сервис-пака этому господину
#12 #786700
>>786599
Множество значений, которые могут храниться в этом типе. Это для плавающих не то же самое, что диапазон - например, 1.0 превратится в что-то типа 1.00000002.
>>786647
Ну хорошо, мистер буквоед. Гарантируется, что long double может хранить значения из double, а double - значения из float. Ни ширина диапазонов, ни конкретные допустимые значения (в.т.ч. наличие NaN и +-Inf), ни направление округления, ни соотношения с диапазонами целых не гарантируются (например, реализация, в которой все плавающие имеют единственное значение NaN, вполне корректна с точки зрения стандарта). Некоторые гарантии предоставляет стандарт IEEE-754, но стандарт крестов не обязывает ему подчиняться. 3.9.1/8, 4.6, 4.8.
>>786740>>786846
#13 #786740
>>786700
Этот standard lawyer прав. Алсо, факт следованию стандарту IEEE 754 можно проверить в рантайме с помощью std::numeric_limits<>::is_iec559()
>>786854>>786885
26 Кб, 781x184
sage #14 #786846
>>786700

> Ни ширина диапазонов, ни конкретные допустимые значения (в.т.ч. наличие NaN и +-Inf), ни направление округления, ни соотношения с диапазонами целых не гарантируются (например, реализация, в которой все плавающие имеют единственное значение NaN, вполне корректна с точки зрения стандарта).


Ты бредишь, прими таблеток. Как полегчает, взгляни на пикрелейтед.
>>786899
sage #15 #786854
>>786740

>Этот standard lawyer прав.


Нет.
>>786899
sage #16 #786885
>>786740

> можно проверить в рантайме с помощью std::numeric_limits<>::is_iec559()


> static const bool is_iec559; (until C++11)


> static constexpr bool is_iec559; (since C++11)



> const(expr)


> в рантайме



Что ещё напишешь?
>>786933
#17 #786899
>>786846
Это кусок сишного стандарта, причем одного из новых. Даже от старого сишного стандарта кресты зависят только в тех местах, где это явно указано в крестовом стандарте (например, для размеров целых чисел), а для плавающих таких упоминаний нет. Хочешь аргументированно поспорить - приводи выдержку из 14882 2014, где есть ссылка на этот твой 5.2.4.2.2, иначе с тем же успехом ты мог бы принести стандарт D или еще хуй знает что.
>>786854
Опровергни.
>>786904
60 Кб, 864x414
sage #18 #786904
>>786899

> Хочешь аргументированно поспорить


Хочу. Но ты уже начал доёбываться там, где негде.

>приводи выдержку из 14882 2014, где есть ссылка на этот твой 5.2.4.2.2


Пффффффф...... На.
>>786947>>786968
239 Кб, 1959x1959
#19 #786933
>>786885
Ну можно и не в рантайме, лол. Че доебался-то?
#20 #786937
Первый глоток воздуха со времен нашествия лабодаунов. Эхх
715 Кб, 2506x1092
#21 #786947
>>786904
Таки кое-какие гарантии насчет плавающих есть. Пикрил из C11 стандарта.
>>786952
sage #22 #786952
>>786947
А мне-то зачем ты показываешь? Я знаю про них.
#23 #786960
Хотя... как константы из библиотек C влияют на типы из C++?
>>786967
157 Кб, 1606x366
#24 #786967
>>786960
Все, расходимся. Минимальные величины float гарантируются.
>>786969>>786971
#25 #786968
>>786904
Я не доебываюсь, просто ты ошибаешься. Смотри, гарантируется текстуальная идентичность файлов. Не гарантируется идентичность ограничений непосредственно на типы (только опосредованно, через FLT_MAX etc). Не гарантируется, что у a<b в C++14 и C99 одинаковая семантика.

Возможна, например, следующая ситуация - в реализации C99 нормальное представление float через IEEE 754, а в реализации C++14 у float единственное значение NaN, не сравнимое ни с чем. В общем хэдере cfloat есть строчка #define FLT_MAX yoba, где yoba есть implementation defined константа какого-то implementation defined типа (в 5.2.4.2.2 не говорится ничего о типах, только о сравнимости), который можно сравнивать с float. К примеру, это может быть long long и его лимит, который оказался превосходящим 1E+37. Когда хэдер используется из C99, все работает очевидным образом - yoba сравнивается с 1E+37 по правилам сишного сравнения и, разумеется, оказывается больше всех конечных чисел. Когда хэдер используется из C++14, крестовая операция сравнения фейлится над единственным возможным значением NaN, а других нет. Смекаешь? Ты был бы прав, если бы в сишном стандарте было прописано требование включать в хэдер сам литерал 1E+37 - тогда из такой извращенной реализации крестов нельзя было бы подключить его без ill-formed исхода. Но этого требования нет, поэтому все требования на тип пропадают при изменении семантики трактовки хэдера с сишной на крестовую. Такие дела.
>>786972
sage #26 #786969
>>786967
Из моих сообщений это уже давно ясно.
#27 #786971
>>786967
Нет же. Гарантируется эквивалентность значения, например, функции max () значению, которое есть в хэдере, который парсится из крестов, и семантика при этом не гарантируется совпадающей с семантикой парсинга этого же хэдера из сей.
>>786972>>786981
sage #28 #786972
>>786968
>>786971

> обосрался


> включил сверхманёвренность


Ясно. Иди нахуй. Больше не кормлю.
>>786982>>786985
#29 #786981
>>786971

>семантика при этом не гарантируется совпадающей с семантикой парсинга этого же хэдера из сей


Месье, в C11 и C++14 семантика сравнения fundamental types почти одинаковая и четко определяется.
>>786987
#30 #786982
>>786972
Сударь, в приличном обществе с сагой не пишут. Вы заебали.
#31 #786985
>>786972
Да ты охуел, блядь, у нас тут не политач, чтобы маневрировать. Я тебе показываю конкретные дырки в твоих рассуждениях, из-за которых они ломаются, чтобы найти истину, а ты с лицом обиженки машешь своими убеждениями. Определись с целями уже.
#32 #786987
>>786981
Да, но она определяется в терминах "если a>b в математическом смысле, то a>b вернет true". Поэтому, очевидно, если значения a и b implementation defined, то и результат сравнения - тоже.
>>786993
#33 #786993
>>786987

>Поэтому, очевидно, если значения a и b implementation defined, то и результат сравнения - тоже



Нет. Определен диапазон float, который минимально вмещает (-2^37, +2^37). Так что не может быть реализации, в которой float будет иметь один NaN. Кстати, ни NaN, ни INF стандартами С++ и C как раз не гарантируются.
#34 #786995
>>786993

>Кстати, ни NaN, ни INF стандартами С++ и C как раз не гарантируются


Спиздел, можете не спорить.
>>786997>>786998
sage #35 #786997
>>786995
Почему спиздел?
#36 #786998
>>786995
Не спиздел, это правда. Даже чисто с точки зрения здравого смысла - если бы они гарантировались, не было бы проверки их наличия в numeric_limits.
#37 #787006
>>786993

>float, который минимально вмещает (-2^37, +2^37)


Разве? Там есть джва утверждения: любой float меньше FLT_MAX; 1E+37 меньше FLT_MAX. По твоей логике, если x<y и z<y, то x<z, так, что ли?
>>787011
#38 #787011
>>787006

>любой float меньше FLT_MAX


любой float меньше или равен FLT_MAX
По стандарту ты можешь сделать:
float a = FLT_MAX;
#39 #787033
>>786993

>меньше или равен


Ага, пардон.

>float a = FLT_MAX


Да, в этом ты прав (я просто забыл о приоритете плавающих типов при преобразованиях аргументов).

Но получается такая штука - мы знаем, что у float в C такой диапазон, знаем из крестового стандарта, что текстуально хэдеры идентичны в крестах и C, но по-прежнему нет гарантий, что текст "float" в хэдере означает одно и то же в крестах и C. Где утверждается, что тип float из крестового стандарта это в точности float из сишного? Конечно, логично, что это реально так, но если уж мы разбираемся с гарантиями стандарта, то нужно подходить формально.
>>787044>>787088
sage #40 #787044
>>787033
Заебал со своей высосанной из пальца конспирологией. Очевидно, что многие вещи в стандарте подразумеваются, а не прописываются явно. Никому (кроме тебя) не приходит в голову доебаться до чего-нибудь вроде того, что в стандарте нет гарантии, что буква "a" на одной странице эквивалентна букве "a" на всех других страницах. Или если стандарт ссылается на пункт 1.2.3.4, который прописан жирным шрифтом, а ссылка на него обычным — то должна быть гарантия, что это один и тот же пункт.
>>787050
#41 #787050
>>787044
Это нихуя не подразумевается, лалка. В хачкеле есть Int, давай теперь считать, что и в крестах у целых длинная арифметика.
#42 #787068
Анон, какой тип выводится для переменной x? Указатель на строку? Почему?
Как итерировать возвращенный из этой функции массив при помощи серийного оператора for?

https://ideone.com/MlRINI
#43 #787088
>>787033
Ну тебя нахуй, ты уже какую-то дичь гонишь
>>787111
#44 #787105
>>787068

>string (&f(int i))[10]



Ты тут возвращаешь одну строку, а не массив строк.
Указатель на массив = указатель на первый элемент.
Таким образом ты возвращаешь указатель на первый элемент.

Массив тебе просто так не вернуть из функции. Ты можешь вернуть только указатель на него.
В противном случае используй один из контейнеров.
>>787131>>787150
sage #45 #787111
>>787088
Ты только понял?
#46 #787130
>>787068

>string (&f(int i))[10]


Впервые вижу такое.
Что делают квадратные скобочки в объявлении функции?
Почему функция объявляется как указатель?
Почему это компилируется?
Ссылки можно?
>>787137
#47 #787131
>>787105
Я там хотел вернуть ссылку на массив строк. Как это можно сделать?
>>787143
#48 #787137
>>787130
Аааа... понял. Он массив, типа, вернуть должен.
#49 #787143
>>787131
Тебе же сказали верни указатель или юзай std::array.
>>787148>>787151
#50 #787148
>>787143

>юзай std::array.


Без "или", говноеды ебаные.
sage #51 #787150
>>787105

>>string (&f(int i))[10]


>Ты тут возвращаешь одну строку, а не массив строк.


c++decl> explain class string (&f(i))[10]
declare f as function (i) returning reference to array 10 of class string
#52 #787151
>>787143
Я просто решаю задачу из книги и хочу разобраться, как это делается.
>>787162
#53 #787162
>>787151
Почему-то вот такие странные ошибки у меня: https://ideone.com/8CRHur

Как будто auto при вызове функции g выводит тип указателя, о которого нет итераторов.
>>787165>>787170
sage #54 #787165
>>787162
Потому что вывод типа для auto так работает.
>>787179
#56 #787179
>>787165
>>787170
Не сажируй. Разобрался, вроде, и сделал с переусложненными определениями. https://ideone.com/7Wusga

До ссылок && пока не дошел.
3 Кб, 134x103
#57 #787180
>>787170
А о такой штуке я даже не знал. Интересно, однако.
Кстати, почему у меня капча в тематике? Более того, такое впечатление, что там пенисы.
>>787184
#58 #787184
>>787180
Капча тут давно уже я кстати тоже думал чому здесь такая "хуекапча"
>>787323
#59 #787323
>>787184
Больные ублюдки, это всего лишь две змейки
>>787326>>787378
#60 #787326
>>787323
У змейки головка залупа сильно выделена.
#61 #787378
>>787323
У змеи голова плавно переходит в тело.
6 Кб, 208x163
с++11 + std::thread. - #62 #787820
Господа, нубский вопрос.
Но стресс-ситьюэйшн - котелок плохо варит,

сервер для простенького чатика нужно реализовать с использованием потоков, а я туплю и не могу сформировать условие - что именно в этой ситуаци должен делать поток?

просто про потоки читал, но не соображу в каком контексте использовать. Сейчас ищу ответ на вопрос., но может двачер подскажет раньше.
спасибо
>>787823>>788140
#63 #787823
>>787820
Ну самое очевидное предложение - использовать несколько потоков для обработки соединений с клиентами.
>>787827>>787828
#64 #787827
>>787823

новый клиент - новый поток?
>>787838
#65 #787828
>>787823
ладно.
ты прав - это было вполне очевидно.
совсем тупанул.
просто зафризился на реализации..
#66 #787838
>>787827
Хуёвая идея, если ты про потоки ОС – слишком большой оверхед.

Самая распространённая в веб серверах реализация – n+1 нативных потоков, между которыми шедулятся легковесные, которые как раз можно спамить сколько влезет.
#67 #787841
>>787838
Ну во-первых, никто не говорил про потоки ОС, во-вторых, никто я имел в виду пул потоков, а в-третьих, какая мне похуй разница, а? Анон просил любую идею, анон получил.
>>787850
#68 #787850
>>787841
Да успокойся, обосрался и обосрался, я просто подсказал антоше в какую конкретно сторону рыть.
#69 #787854
>>787838

> спрашивающий.


спасибо.
поразмыслю над...
птом вернусь
#70 #787922
>>786424 (OP)
Нужно считать траффик на компе и записывать историю посещенных сайтов, что юзать?
#71 #787942
>>787838
А вот есть standalone-либа для реализации исключительно зеленых потоков и подобной хуйни? Вроде бы хочется иногда нашакалить вместо std::thread, но вечно оказывается, что вместе тянется какой-нибудь ебаный фреймворк, который тяжелее мамаши Энтони.
>>788128
#72 #788128
>>787942
#include <csetjmp>
#73 #788140
>>787820
boost::asio
#74 #788179
Вопрос не по конкретно C++, но в других местах врятли получу нормальные ответы.
Подаю резюме на C++ джуна в аутсорсинговую компанию. Чего ожидать? Никогда не работал в аутсорсе, только в ламповых кухнях. Как выглядит работа джуна ремоут? Меня что, будут учить по скайпу? Есть ли специфика относительно C++?
>>788349
#75 #788270
Антуаны, платина в треде.
Насколько будет сложно перейти от С к С++, если первый знаешь так себе и при этом немного писал на С# и Python. Хочу угореть по встраиваемым системам и компуктерному зрению.
>>788349>>788569
#77 #788279
>>788277
КРЕСТЫ УБИВАЮТ
КРЕСТЫ = РАК
ВЕК РЕЛИЗА НЕ ВИДАТЬ
#78 #788349
>>788179

>Как выглядит работа джуна ремоут?


как ваниль. какой нахуй ремоут джун, совсем пизданулся штоле? на ремоут берут только синьоров

>Меня что, будут учить по скайпу?


собеседовать только

>>788270
пиздец как сложно какой вопрос такой и ответ
>>788450>>788591
#79 #788450
>>788349
Покажи-ка мне вакансию где синьором можно дома сидеть.

Вон Ванька Ерохин в офисе сидит уже 10 лет 5 на 8 и ты будешь, умный какой нашелся
>>788464
#80 #788456
Любая удаленная вакансия C++ на hh
#81 #788464
>>788450
толсто я сейчас дома сижу если чо
#82 #788465
Есть где почитать про реализацию сетевых приложений?
Заканчиваю Таненбаума читать комп. сети основы.
Хотелось бы узнать как реально все проектируется, запиливается, подводные камни етц.
Желательно конечно на крестах/сишечке.
>>788467
#83 #788467
>>788465
Richard W Stevens
>>788475
#84 #788475
>>788467
Чем вообще отличаются TCP/IP Illustrated от Network programming?
Первое это подробная работа стека протоколов, а второе уже реализация приложений, так?
>>788506
#85 #788506
>>788475
Ты даже содержание не можешь посмотреть?
Откуда вы блджад беретесь такие.
#86 #788509
>>786424 (OP)
я ньюфаг, так что не пинайте. Подскажите (дайте ссылку) минимальную/древнюю сборку mingw для компилирования в x-64 (достаточно стандарта 99) Спасибо.
#87 #788569
>>788270
Эккеля почитай, он как раз книжку для таких как ты писал.
#88 #788591
>>788349

>какой нахуй ремоут джун, совсем пизданулся штоле?


Так я сам охуел, потому и спрашиваю.
>>788642
#89 #788629
Почему когда я вызываю деструктор мне так жалко мои обекты?
#90 #788642
>>788591
где это ремоут крестовиков нанимают?
>>788652
#91 #788651
Анон, почему здесь ошибка выполнения? У меня две перегруженные функции: одна принимает константные ссылки и возвращает конст ссылку, а другая такая же, но ссылки обычные. Эта функция использует первую для вычисления возвращаемого значения. Кланг компилирует, но программа ничего не выводит в терминал.

https://ideone.com/dbpoTi
>>788742
#92 #788652
>>788642
Вот у этих, например, почти все по удаленке работают: http://www.slightlymadstudios.com/careers.html
>>788752
#93 #788666
Постоянно выдает ошибку линковки, в гугле не нашел ничего
Самое интересное, что сие происходит только с функциями с Wtsapi

1>main.obj : error LNK2001: unresolved external symbol _WTSQueryUserToken@8
1>main.obj : error LNK2001: unresolved external symbol _WTSEnumerateSessionsW@20
~ fatal error LNK1120: 2 unresolved externals

Как это пофиксить?
>>788726
#94 #788726
>>788666
#pragma comment("wtsapi.lib")

Либо, если у тебя Visual Studio: Правой кнопкой на проекте -> Свойства(Preferences) -> В левой колонке компоновщик(Linker) -> Ввод(Input), туда вводишь wtsapi.lib.

Если всё равно не залинкуется - проверь, может, он по-другому называется.

В GCC и подобном нужно в опциях сборки указать -lwtsapi. Но тут может сработать, а может и нет. Линковка в GCC вообще говно.
#95 #788729
>>788726
Благодарки, все работает
wtsapi32.lib
#96 #788731
>>788726
В шиндовом компиляторе тоже бывает такая же хуита как GCC, когда линковка может зависеть от расположения с списке зависимостей и фазы луны.
>>788737
175 Кб, 500x480
#97 #788737
>>788726

>Но тут может сработать, а может и нет. Линковка в GCC вообще говно.


Ебаный стыд. Хули ты советы даешь, умник, если man не осилил? Не работает у него, блядь.

>>788731
когда линковка может зависеть от расположения с списке зависимостей и фазы луны
Еще один, блядь. Порядок действительно влияет на результат, но это четко прописано в man'е.
#98 #788740
>>788726
А за такое:

>#pragma comment("wtsapi.lib")


надо ебать каленым железом. Пиздец просто.
#99 #788742
>>788651
Ты не знаешь, как работает auto. Почитай про вывод типа у Мейерса в новой книжке.
#100 #788752
>>788652
Заебись, а еще что-нибудь знаешь подобное?
>>788757
#101 #788756
Почему этот пример компилируется? В книге написано, что вторая constexpr-функция вернет неконстантное выражение, если ее аргумент не константа.

https://ideone.com/8DfwDo
>>788758
#103 #788758
>>788756
Все правильно. В данном коде вторая функция не является constexpr и результат из function-call нельзя использовать как constexpr.
А если сделать scale(3), то результат будет constexpr
>>788761
#104 #788759
В qtcreator clang code model выебывается и не находит std::make_unique (не находит и подсвечивает как ошибку). CONFIG += c++14 прописал. clang v3.8
Нахуй так жить, поцоны?
>>788760
#105 #788760
>>788759
А в хедере оно есть?
>>788772
#106 #788761
>>788758
Но почему тогда массив определяется, если его размерность не constexpr? Кланг компилирует точно так же успешно.
>>788766
#107 #788766
>>788761
В глаза ебусь - не заметил этой массива.
Кароч clang очень умный и зоделол static values propagation. Сделай пример посложнее и работать не будет.
>>788774
6 Кб, 402x36
30 Кб, 600x262
127 Кб, 702x660
#108 #788772
>>788760
А то. Как и положено - 3 штуки. Я уже незнаю что происходит. clang code model вырубил - все норм. Но мне без него плохо.
Судя по всему этот плагин как-то пидорасит символ `__cplusplus`.
>>788776
#109 #788774
>>788766
Можешь подробнее о static values propagation? Гугл молчит, но говорит, что значение в скобках должно быть constant expression, но:
https://ideone.com/B4hLLg

Другой анон
>>788791
#110 #788776
>>788772
Тебя не смущает, что среда затенила невыполнившуюся ветвь #if?
>>788779
129 Кб, 720x664
#111 #788779
>>788776
Смущает.

> Судя по всему этот плагин как-то пидорасит символ `__cplusplus`.


Отключил плагин - вот результат.
>>788793
#112 #788791
>>788774
static values propagation - это сворачивание ситуаций типа:
int a = 4;
int b = a;
int c = b;
к:
int a = 4;
int b = 4;
int c = 4;

А с примера я тоже в ахуе. С одной стороны оно и понятно - массивы из C в современном c++ не используют. Но с другой стороны стало интересно. И в общем, это - расширение clang'а: http://clang.llvm.org/compatibility.html#vla

Т.е. это не по стандарту и в других компиляторах может не работать. Но там, где работает, эта запись будет эквивалентна "new <type>[size]"
>>788824>>788835
#113 #788793
>>788779
Не пидорасит, а просто не определяет или определяет но с значением меньшим, чем 201103L
#114 #788824
>>788791
Никакого propagation тут нет, стандарт явно запрещает такое. Вот ответ: >>788796
#115 #788835
>>788791
Не знаю насчет clang, а про gcc писали, что оно работает только для автоматических массивов, и вместо выделения на куче будет нормально пихать их в стек, типа вместо DEC EBP, const станет DEC EBP, yoba.
#116 #788861
Экспериментирующий питуз вернулся. Это что же получается: из функции можно вернуть указатель на любую функцию, реализующую что угодно, лишь бы тип этих функций был одинаковый? Какие профиты из этого можно извлечь?

https://ideone.com/RkBGJz
#117 #788867
>>788861
Реализовать callbacks, очевидно же.
#118 #788868
>>788861
Странно, почему-то не получается.
https://ideone.com/w6Fh5n
>>788873
#119 #788873
>>788868
У тебя только определение функции g, реализации нет.
#120 #788877
>>788861
есть уж возвращать, то std::function, который абстрагирует функции и функторы
#121 #788937
>>788861
Функцию можно вызывать без разыменования указателя, просто pf(x, y).

>Какие профиты из этого можно извлечь?


Без контекста функции обычно мало полезны, поэтому возвращают классы или лямбды.
#122 #788946
Анон, подскажи годный гайд по libev в C++ стиле. Типа нормальными классами, которые из ev++.h
511 Кб, 1024x1529
2 вопроса - #123 #789559
1. господа. юзаю sublime text, но настраивать его заебался - всякие мелочи доёбывают.
в TOOLS , на панели наверху, когда очередной раз скачал и установил - вместо RUN, вылезло Build with...
И эта хуйня каждый раз при запуске просит выбрать - просто билдить или с запуском. а мне нужно просто запуск делать.
Подскажите. кто юзает, в каком месте эта хуйня настраивается?

2. Пишу простой сервер-клиент. инструменты с++ и линукс.
приложение делаю с использованием std::thread. то есть многопоточность.
С сетями раньше не игрался. Вот нужен совет, в плане конструкции.
Насоветуйте плз, место для полета, куда можно воткнуть многопоточность, в указанном контексте:
типа отдельным потоком слушать клиентов,
потом отдельным потоком отдельных клиентов обрабатывать и прочее...

благодарю.
>>789560
#124 #789560
>>789559
boost::asio
>>789573
#125 #789573
>>789560
поясни.
просто я спрашивал относительно многопоточности.
и именно совет в плане использования, а не реализации.
может просто я не так понял
>>789575
#126 #789575
>>789573
хуячишь воркер-треды
пуляешь асио
асио менеджит треды
многопоточность!
Параметризация типа переменной #127 #789748
Был алгоритм для работы с unsigned short массивами. Выделение памяти, вычисления и т.д.

Затем я понадобилось тем же алгоритмом обрабатывать unsigned __int8 массивы. Я сделал копипаст с заменой типа везде + мелкие доработки (но на 99% алгоритм остался тем же самым).

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

Как можно все эти действия параметризовать? Шаблоны для этой цели созданы? Что в итоге работы шаблоном сгенерится? Тот же самый код с ветвлением? Как эта проблема решается в нормальных языках программирвоания, типа Haskell, Agda?
>>789758>>789778
#128 #789758
>>789748
Сорри за ошибки.
#129 #789778
>>789748

>Шаблоны для этой цели созданы?


Да.

>Что в итоге работы шаблоном сгенерится?


Такой же код, как если бы ты вручную копипастил тело шаблона. Используешь для двух разных типов - будет два похожих куска кода.

>Тот же самый код с ветвлением?


Ветвление избыточно, если компилятор уже знает, какой нужен тип. С шаблонами в бинарнике останется только тот код, который ты реально используешь. Например, если ты заменил unsigned short на unsigned __int8, то код для второго типа автоматически сгенерируется, а код для первого - автоматически удалится.

>Как эта проблема решается в нормальных языках программирвоания


Полиморфизм бывает двух видов: ad hoc (это то, что будет с шаблонами) и динамический (с автоматическим "ветвлением"). В "нормальных языках" (например, в C++) доступны оба варианта на твой выбор.
>>789931
37 Кб, 500x379
#130 #789815
Гайз, к ньюфагам лезть не хочу, потому простой практический вопрос сюда :
На linux (убунту) если под редактор текстовый писать - как нибудь можно сделать чтобы программа запускалась в отдельной консоли?
Как на винде короче.
Под кодблок писал - там вылезало в отдельном окне.
Но я под виртуальную машину пишу , и на нем тормозит ide.
>>789911>>790588
#131 #789834
Анон, какого хуя можно вызывать неконстантные методы у константного объекта? Это ведь запрещено, потому что неявно передается ссылка this на константный объект, которую надо модифицировать при помощи const для возможности вызывать методы у const объектов.

https://ideone.com/25foCq

Компилирую clang.
>>789843
#132 #789843
>>789834

> Анон, какого хуя можно вызывать неконстантные методы у константного объекта?


Я не вижу этого в твоём коде.
>>789849
#133 #789849
>>789843
Тогда что такое константный объект? Разве const Person p - это не определение константного объекта? В этом случае this должен иметь тип const Person *const
>>789856
#134 #789856
>>789849
Где у тебя в коде вызываются константные функции?
>>789861
#135 #789861
>>789856
У меня в коде вызываются обычные функции у константного объекта. Обычной функции неявно передается this типа T *const. При вызове функции у константного объекта this имеет тип константного указателя на константный тип. Это должно вызывать ошибку компиляции, потому что типы this не совпадают: невозможно передать указатель на const объект как обычный указатель.
>>789867
#136 #789867
>>789861

> У меня в коде вызываются обычные функции у константного объекта.


Ты, видимо, ошибся с кодом.
Вот как ты хотел.
https://ideone.com/PI7OVF
#137 #789911
>>789815
cat << EOF > run.sh
#!/bin/sh
xterm -e <path to your program>
EOF
chmod +x run.sh

И запускаешь run.sh вместо своей программы.
>>789916>>789972
#138 #789916
>>789911
Спасибо бро.
Полагаю, что этоб можно и в sublime прописать
#139 #789931
>>789778

>С шаблонами в бинарнике останется только тот код, который ты реально используешь.


У меня вообще не в этом проблема. Проблема состоит в том, что я не знаю какого типа данные мне придут на вход. К примеру, это могут быть массивы чисел double, а могут быть массивы unsigned __int8. На этапе разработки и компиляции мне ничего не известно о входных данных. Но я должен предусмотреть обработку или всех или некоторых. В связи с тем, что мои действия по обработке схожи я хочу параметризовать входные типы.
#141 #789939
>>789931
Зачем тебе знать конкретный тип?
#142 #789972
Гайз, недавно пересел на ubuntu
и юзаю сублим.

Такая ситуация : запускаю простое приложение сервера.
как я понял оно запускается в сайлент режиме - об этом я узнаю по ошибке, которую выдает сублим при следующем запуске - порт занят. как это гуглить - хз.
по-крайней мере понял что прога нормальная.

посоветуйте выход из ситуации?
как минимум запуск приложения в отдельном окне

>>789911
если это в настройки сублим пихнуть - будет работать?
#143 #789980
>>789931
std::enable_if, std::is_integral и так далее
3289 Кб, 556x242
Воюем с linux, c++, tcp-сервером и sublime text - C++ - #144 #790007
Ребята,
Сижу - пишу код на linux (ubuntu)
Пишу tcp-server. Юзаю Sublime Text 2.

Такая ситуация в общем.
: запускаю простое приложение сервера. Оно мне жаловалось после одного запуска, что мол адрес занят.
А я только потом понял, что оно запускается типа в "сайлент режиме" - т.е если запустить "хелловорлд", то сублим выдаст результат в консоль. А если сервер - то никакого окна не будет. и не пойму как убить процесс запущенный.
и даже как проблему гуглить не пойму.

посоветуйте выход из ситуации?
как минимум, что бы отдельный запуск окна был.
Что-то донастроить. Или пересесть за другой редактор?
>>790016>>790107
#145 #790016
>>790007
лалка, покомпиль из консоли для начала, чтобы разобраться с фазами компиляции и не задавать тупых вопросов. Каждую мелочь тебе никто рассказывать не будет. Про tcl ты прочитал, а про компиляцию, пайпы и демоны не прочитал. Ну и нахуй мучать жопу, когда срать не умеешь?
>>790028>>790107
#146 #790028
>>790016
я знал, что ты так скажешь...
#147 #790107
>>790007
>>790016

прошу решения, в том числе и в дальней перспективе. хотя полагаю - заюзать книгу по "c++ на unix" - это пока единстенное верное решение?
#148 #790255
Прошлый тонул, оказывается. http://ideone.com/kix7uE почему тут функция getDebt спокойно видит getPerson из другого неймспейса без какого-либо указания на него, без using'ов и т.д.? Всего лишь потому, что структура Debt использует структуру из того неймспейса? А если добавить в pers какую-нибудь переменную, то её, разумеется, не видно ( http://ideone.com/RSkTG2 ).
>>790289
#149 #790289
>>790255
Это называется поиском Кенига (гугли Koenig lookup или argument-dependent lookup). Суть (упрощенно) в том, что при поиске функции по имени к текущему неймспейсу добавляются неймспейсы, в которых объявлены типы аргументов. Для переменной это, очевидно, не работает, потому что никаких аргументов у нее нет.
>>790322
#150 #790322
>>790289
О, спасибо.
#151 #790336
Аноны, стоит ли читать учебник Страуструпа, если уже прочёл Прату?
>>790346>>790409
#152 #790346
>>790336
Смотря какой
>>790368
#153 #790368
>>790346
Тот, что в шапке "Программирование. Принципы и практика использования C++" .
>>790554
#154 #790409
>>790336
Стоит.
#155 #790447
>>786424 (OP)
Аноны, вкатываюсь в c++,
объясните, в чем разница между
int x=(int)(228.7);
и
int x = 228.7;
>>790450
sage #156 #790450
>>790447
cast operator vs implicit conversion
#157 #790473
Чекните этот тред https://2ch.hk/pr/res/790371.html (М)
#158 #790515
Анон, я засел на такой проблеме: как перенести определение конструктора SalesData (std::istream &) в тело класса? Этот конструктор использует функцию, которая определена ниже. Определить выше ее нельзя, потому что тогда ошибка будет из-за того, что ниже находится определение класса.

https://ideone.com/y3DdGI
>>790567
#159 #790537
>>786424 (OP)

В шапке говна мамонта в качестве литературы по С++. На носу С++17, а они всё книги из 2002 года читают. По сравнению с С++98 многое стало неактуальным, а некоторые старые практики попросту вредными.
Я бы советовал нбюфагам читать как можно более свежую литературу, пусть и не классику.
У Майерса к примеру по С++11 и 14 вышли книги, хуле их нет в списке?
>>790561
#160 #790554
>>790368
Его не стоит, он даже проще Праты. А "Язык" можешь читнуть.
#161 #790561
>>790537
Есть там новый Мейерс, не ебись в глаза. Шапка составлена весьма грамотно, книги, которые действительно устарели, помечены как deprecated. В том же Мейерсе или Саттере советы практически не протухают, особенно если каждую идиому дополнительно гуглить, когда читаешь. А переписанных заново аналогов им нет (новый Мейерс рассказывает конкретно про фичи нового стандарта, а не правит старые указания), поэтому энивей лучше прочитать и потом немного подкорректировать, чем не читать вообще.
#162 #790567
>>790515
Объявление функции без тела допиши перед классом, очевидно же.
>>790803
#163 #790588
382 Кб, 1018x576
#164 #790690
>>786424 (OP)
Народ, поясните за хуйню.
Вот у меня
int pi = new int;
Вот я делаю
delete pi;
И что теперь? Что происходит в ебаной машине? В книжках по факту нихуя не говорится, блядь, как это все работает.
Я блядь один хуй могу взять после этого въебать такое
pi = 1;
cout << *pi << endl;
и все будет ок, будет работать.
Если я так правильно понял, просто потом, когда я следующий раз выделю память, то как раз на это место может указывать указатель, а если я не напишу delete, то на это место указатель уже не сгенерируется никогда? Я прав?
#165 #790803
>>790567

>Определить выше ее нельзя, потому что тогда ошибка будет из-за того, что ниже находится определение класса

>>790856>>790869
#166 #790856
>>790803
Почему нельзя написать определение класса, затем определение функции, а потом уже реализацию класса и функции?
46 Кб, 604x447
#167 #790862
Господа, врываюсь в мой любимый тред, где сплошь элита.
Вопрос на чисто поболтать, с примечанием :
Я вот буквально пару дней назад сел писать код в ubuntu.
Сижу, блять , ебусь с этой херней. Столько нюансов и прочее. Лень, но постараюсь не стать не неосилятром.
Буду тихо давить.
Поясните за программирование на unix.
Почему все так дрочат на него?
Я понимаю, что возможно высокий входной порок - дает почувствовать себя элитой. И понимаю, что возможные плюсы я еще не видел - ведь только сел за это дело.
В общем господа, поясните «чекаво»
#168 #790863
>>790690

>intЗВЕЗДА pi = new int;


В куче выделяется место, указанное платформой для переменной типа инт; в стэк идет переменная типа указатель на тип инт.

>delete pi;


В куче удаляется переменная, на который указывает pi, и заменяется null-ом. Освобождается ли память? А хуй знает, самому интересно, ведь null это тоже инт.
Но я могу быть и неправ, так как хуй простой, заменивший обучение по книге обучением методом проб и ошибок.
>>791253
#169 #790869
>>790803
Ты меня не слушал штоле, сука, ебаная тетя? Для кого я объясняю? Сначала объявляешь класс (без тела, просто class YourMomma;), потом объяляешь функцию (просто void makeBorsch (YourMomma &);), потом, блядь, определяешь класс (class YourMomma {...};) и, наконец, определяешь функцию (void makeBorsch (YourMomma & momma) {...}). Теперь пиздуй реализовывать эту ебалу, а если еще раз придешь сюда с долбоебским вопросом, я приеду и лично выебу тебя в ленивую сраку, аутист, блядь, хуев.
#170 #790871
>>790862
На винде нет интсрументов/компеляторов/интерпритаторов. Ну и работать под никсами удобнее, так как все можно настроить под себя. Всё.
>>790873
#171 #790872
>>790862

>почему все дрочат на него


Нихуя не дрочат, никсоиды вообще больше по сям. Алсо, шапка крестотреда вообще довольно сильно заангажирована под студию и венду, а любители пердолинга уже несколько раз на моей памяти были обоссаны спермогосподами.
#172 #790873
>>790871
Какого это компилятора нет на венде, ну-ка ну-ка? Из инструментов могу вспомнить разве что valgrind, но это уже скорее стиль мышления и разные подходы.
#173 #790880
Крестаны, а как у вас сделать побитовый сдвиг? Циклический.
>>790909
#174 #790888
>>790873
Продолжайся наслаждайся дальше еблёй с зависимостями на шинде, причём на всех стадиях. Только это всем юниксподобным системам уже даёт юуст на 9000 очков.
>>790894
#175 #790892
>>790873

>я тот кто задавал вопрос.


Во во , я о том же.
Просто если ты хочешь писать код в итоге - стоят ли все эти лишние заебы того?
#176 #790894
>>790888
Извини, здесь нуб.
Про какие именно зависимо сти ты говоришь? Он
>>790905
9 Кб, 184x184
#177 #790898
>>790873
А как же
МЕНЕДЖЕР ЗАВИСИМОСТЕЙ
?
>>790968
#178 #790905
>>790894
Вот тебе банальный пример - как Qt с бустом ставить будешь? или opencv и вообще любая библиотеканейм?

В юнипсе - сука апт-гет инсталл библиотеканейм-дев
#179 #790908
>>790905
Впрочем, на винде можно поставить msys - и через него ставить и компилятор, и небо и аллаха - там есть пакман как в арчике.
>>790918
#180 #790909
>>790880
<<, >>
While ()
a << 1;
>>790915
64 Кб, 680x450
#181 #790915
>>790909

> циклический


> while

#182 #790918
>>790905
Если буст/Qt/OpenCV - с ними на шинде ещё всё более менее цивильно.

Но не дай, блять, бог тебе придётся собирать что-то с незавендоренными зависимостями (особенно ГНУтым говном, с кривыми портами пятилетней выдержки) - ты не надолго останешься на этой ОС.

>>790908

>там есть пакман как в арчике


Регулярных обновлений как в арчике нету, хотя раз в год популярные хуитки таки обновляют (но никсовым софтом вроде вима без гуя пользоваться невозможно).
>>790939>>791080
#183 #790939
>>790918

>Регулярных обновлений как в арчике нету


Да ладно, я помню - все там нормально обновлялось, я юзал сабж.

И мингв, и куча говнолиб, и пиздон и его окружение оттуда ставил.
>>790948
#184 #790948
>>790939

>И мингв, и куча говнолиб, и пиздон


Если они не обновлялись бы, смысла в этом проекте не было бы от слова совсем насколько я помню, это кстати уже не вторая и даже не третья попытка, где там его предшественники?
>>790949
#185 #790949
>>790948
Какие предшественники?
>>790952
#186 #790952
>>790949
cygwin, gnuwin, unxutils и пр.
>>790955
#187 #790955
>>790952

>gnuwin, unxutils и пр.


Про эту херню не слышал даже, а цыгвин - он изначально был не того.
Вроде недавно красношапка на него лицензию сменила кстати.

А msys был всегда, но раньше там был башик, а всю хуйню нужно было качать зип-архивами и ставить ручками, а с пакет-менеджером срало заебок.

Впрочем, я слышал, в десяточке уже родили пакетманагер. Это правда? И рабочие столы слышал - тоже впилили таки уже?
>>790978
#188 #790968
>>790898
Хуй знает, мне Nuget'а хватает за глаза.
>>790971
#189 #790971
#190 #790978
>>790955
Столы – да (но их концепция всё же посасывает что у гномовской, что у макосовской, с которой содрана), покетманагера из коробки так и нету, просто пилят "убунту фор шиндовс" официально, когда нибудь да появится.
#191 #790992
>>790905

>и вообще любая библиотеканейм?


Ставишь mingw-w64, msys. Чего нет в мсисе, ищешь на rpmfind в mingw64-libname пакетах, распаковываешь, копируешь вручную. Хотя кросскомпиляция из под арчика в разы удобнее, конечно.
sage #192 #790996
>>790873
Современные clang + libc++ + lldb + llvm?
>>791026
#193 #791024
>>786424 (OP)
Я короче нуб и вообще нахуй не программист по специальности, но просто хочу попиздеть за С++, если хотите - доказывайте мне что я не прав, будем дискутировать, ток не обзывайтесь и не оскорбляйте на пустом месте, плес, тошнит от этого всего. Ну или оскорбляйте, мне похуй.

>они с большим отрывом уделывают по скорости все остальные языки высокого уровня.


Ну так-то да, только есть ньюанс. Во-первых, шарп в некоторых тестах либо равен либо чуть медленней с++ по производительности. Но это хуйня, есть более серьёзный ньюанс, как мне кажется. Короче, по сути в С++ из коробки нет нихуя. Да и с коробкой тоже. Хуй нагуглишь и подключишь какую-нибудь библиотеку для решения тривиальной для других языков задачи. Да, задача прикладная а плюсы ж ну эт тип крутой езык для системных погроммистов и шобы там на нём всякие крутые математические штуки писать)) Не удивительно, что на нём нет многих таких популярных библиотек и не справедливо ставить ему это в минус НО проблемы начнутся тогда, когда ты в отсутствии уже реализованного и поддерживаемого открытым коммьюнити функционала ебанёшь себе его сам. Сможешь ли ты писать свои библиотеки так, чтобы они работали быстрее чем встроенные / подключаемые библиотеки для других языков? Особенно когда в том же C# такой функционал пилился и поддерживался годами. Короче, это еще большой вопрос.

>Используя C++, ты никогда не останешься без работы или поддержки комьюнити.


Вот это самый пиздец, мне кажется. Ну, про помощь коммьюнити пиздеть не буду, да, хотя опять же, на тех же C#, Java, Ruby и Python гораздо проще найти топик на stackoverflow где коммьюнити уже для кого-то решило типичную задачу, с которой столкнулся васян, решивший просто без задней мысли написать несложное приложение для автоматизации чего-нибудь. Ну, например, редактирование пользователей через LDAP (ради интереса кстати погуглил как это на плюсах делается, пиздец, объем кода раза в 3 выше).
Ну и насчёт работы: как у меня сложилось впечатление, понятия джун-C++ вообще не существует, все ищут только рукастых специалистов с огромным опытом и знаниями (prove me wrong). Где их набирать в таких условиях - хуй его, блять, знает.

>в C++ ты никогда не платишь за то, чего не используешь


Вот эта фраза очень понравилась, да.

А вообще С++ считаю безусловно пиздатым и достойным изучения языком.
#193 #791024
>>786424 (OP)
Я короче нуб и вообще нахуй не программист по специальности, но просто хочу попиздеть за С++, если хотите - доказывайте мне что я не прав, будем дискутировать, ток не обзывайтесь и не оскорбляйте на пустом месте, плес, тошнит от этого всего. Ну или оскорбляйте, мне похуй.

>они с большим отрывом уделывают по скорости все остальные языки высокого уровня.


Ну так-то да, только есть ньюанс. Во-первых, шарп в некоторых тестах либо равен либо чуть медленней с++ по производительности. Но это хуйня, есть более серьёзный ньюанс, как мне кажется. Короче, по сути в С++ из коробки нет нихуя. Да и с коробкой тоже. Хуй нагуглишь и подключишь какую-нибудь библиотеку для решения тривиальной для других языков задачи. Да, задача прикладная а плюсы ж ну эт тип крутой езык для системных погроммистов и шобы там на нём всякие крутые математические штуки писать)) Не удивительно, что на нём нет многих таких популярных библиотек и не справедливо ставить ему это в минус НО проблемы начнутся тогда, когда ты в отсутствии уже реализованного и поддерживаемого открытым коммьюнити функционала ебанёшь себе его сам. Сможешь ли ты писать свои библиотеки так, чтобы они работали быстрее чем встроенные / подключаемые библиотеки для других языков? Особенно когда в том же C# такой функционал пилился и поддерживался годами. Короче, это еще большой вопрос.

>Используя C++, ты никогда не останешься без работы или поддержки комьюнити.


Вот это самый пиздец, мне кажется. Ну, про помощь коммьюнити пиздеть не буду, да, хотя опять же, на тех же C#, Java, Ruby и Python гораздо проще найти топик на stackoverflow где коммьюнити уже для кого-то решило типичную задачу, с которой столкнулся васян, решивший просто без задней мысли написать несложное приложение для автоматизации чего-нибудь. Ну, например, редактирование пользователей через LDAP (ради интереса кстати погуглил как это на плюсах делается, пиздец, объем кода раза в 3 выше).
Ну и насчёт работы: как у меня сложилось впечатление, понятия джун-C++ вообще не существует, все ищут только рукастых специалистов с огромным опытом и знаниями (prove me wrong). Где их набирать в таких условиях - хуй его, блять, знает.

>в C++ ты никогда не платишь за то, чего не используешь


Вот эта фраза очень понравилась, да.

А вообще С++ считаю безусловно пиздатым и достойным изучения языком.
#195 #791028
>>791024

>ради интереса кстати погуглил как это на плюсах делается, пиздец, объем кода раза в 3 выше


Я от такой хуйни (ну и кучи другой) в дишку вскочил.
#196 #791037
>>791024

>либо равен либо чуть медленней с++ по производительности


Все правильно, и естественно, что для задач типа написания обычных десктопных приложений шарп подходит немного больше. Фишка в том, что когда тебе нужно писать и хуйню вроде гуя, и высокопроизводительную мякотку (вычисления, хайлоад), то удобнее делать все на одном языке.

>Хуй нагуглишь и подключишь какую-нибудь библиотеку


Это проявляется не так часто, как многим кажется. Для всех задач, под которые кресты хотя бы отдаленно подходят, есть куча годных либ. Разумеется, есть исключения, но я буквально по пальцам могу пересчитать случаи, когда я не смог нагуглить нужную мне либу. Уровень пердолинга с либами переоценен, уже давно все нормальные либы заточены под CMake и/или имеют пакеты в NuGet. А мелкие вообще зачастую header-only, там ебли нет по определению.

>Сможешь ли ты писать свои библиотеки так, чтобы они работали быстрее чем встроенные / подключаемые библиотеки для других языков?


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

>вообще не существует


Еще как существует, но рынок перенасыщен, ибо в универах учат крестам на околоджуновском уровне чаще, чем жабе или шарпу. Это проблема, да. В какой-то степени она компенсируется гарантией, что ты не умрешь от голода, т.к. всегда есть сотни долбоебов, которым нужно запилить лабу или курсач за пару косарей (по мне это лютый зашквар, но кому-то это может пригодиться, лол).
2110 Кб, 1920x1080
#197 #791038
>>790862

>Поясните за программирование на unix.


>Почему все так дрочат на него?


Хуйня полная, в основном слухи о суперпопулярности и незаменимости линукса распространяют дебилы, подобные местным петухам из /s/. Кстати, в /s/ можно заметить одну интересную вещь: там практически никогда не бывает пруфов зарплат/квалификации любителей порассуждать про ОС. Оно и неудивительно, т.к. вменяемый человек никогда не будет на полном серьёзе увязывать инструмент для решения задачи с какими-то личностными качествами самого решающего эту задачу.
Более того, хотя я и ненавижу майкрософт, нужно признать, что .NET платформа охуенная и развивается она охуенно сейчас. Лол, даже для линукспетухов версию выпустили.
Сам не перехожу на линукс (хотя и планирую) как раз ввиду того что внешне он убог и его надо не настраивать под себя, тут буквально надо допиливать ОС за разработчиков и криворуких дизайнеров.
В линуксе нет удобных хоткеев, к которым я привык в винде. Нету даже аналога Win+стрелки на клавиатуре, это охуенно, я чувствую себя как без рук без этого сочетания да и без остальных тоже. Всё вечно вкривь и вкось, на соплях приделано.
Смотри, зашел на двач - зажимаю колесо мыши, страница не скроллится. Ну, вообще. Браузеру просто похуй. Делаю один поворот колеса мыши - тред проскролливается НА СЕРЕДИНУ блядь, просто сразу. На работе была тема, что это говно само по себе вылетало на логинскрин закрывая при этом все мои открытые приложения. Я могу продолжать бесконечно, и понимаешь, вот в этом для меня суть линукса, это как почта россии - никогда не знаешь, где она тебя наёбет, но знаешь, что наебёт обязательно. Да, возможно на какие-то из моих аргументов мне ответят, что в линуксе есть аналоги, но нахуя я буду переучиваться, вот ради чего? Просто для того чтобы перейти на другую ОС? А зачем? Что она мне даст, кроме пердолинга?
И да, больше всего омерзительно, что мультиплатформенные версии программ под линуксом выглядят убого. Вот есть PyCharm я там пишу код на питоне и она в винде выглядит красиво и охуенно с моим шрифтом Input. Под убунтой... блядь, нутыпонел в общем.

Хотя надо сказать что работать только через сонсольку без гуи и поднимать всякие сквиды-роутеры писать скрипты и прочую хуйню под линь мне нравится, из консоли он прекрасен и никакая спермодесятка никогда даже не приблизится к этому. Короче, инструменты каждый выбирает по вкусу.
>>791024-кун
2110 Кб, 1920x1080
#197 #791038
>>790862

>Поясните за программирование на unix.


>Почему все так дрочат на него?


Хуйня полная, в основном слухи о суперпопулярности и незаменимости линукса распространяют дебилы, подобные местным петухам из /s/. Кстати, в /s/ можно заметить одну интересную вещь: там практически никогда не бывает пруфов зарплат/квалификации любителей порассуждать про ОС. Оно и неудивительно, т.к. вменяемый человек никогда не будет на полном серьёзе увязывать инструмент для решения задачи с какими-то личностными качествами самого решающего эту задачу.
Более того, хотя я и ненавижу майкрософт, нужно признать, что .NET платформа охуенная и развивается она охуенно сейчас. Лол, даже для линукспетухов версию выпустили.
Сам не перехожу на линукс (хотя и планирую) как раз ввиду того что внешне он убог и его надо не настраивать под себя, тут буквально надо допиливать ОС за разработчиков и криворуких дизайнеров.
В линуксе нет удобных хоткеев, к которым я привык в винде. Нету даже аналога Win+стрелки на клавиатуре, это охуенно, я чувствую себя как без рук без этого сочетания да и без остальных тоже. Всё вечно вкривь и вкось, на соплях приделано.
Смотри, зашел на двач - зажимаю колесо мыши, страница не скроллится. Ну, вообще. Браузеру просто похуй. Делаю один поворот колеса мыши - тред проскролливается НА СЕРЕДИНУ блядь, просто сразу. На работе была тема, что это говно само по себе вылетало на логинскрин закрывая при этом все мои открытые приложения. Я могу продолжать бесконечно, и понимаешь, вот в этом для меня суть линукса, это как почта россии - никогда не знаешь, где она тебя наёбет, но знаешь, что наебёт обязательно. Да, возможно на какие-то из моих аргументов мне ответят, что в линуксе есть аналоги, но нахуя я буду переучиваться, вот ради чего? Просто для того чтобы перейти на другую ОС? А зачем? Что она мне даст, кроме пердолинга?
И да, больше всего омерзительно, что мультиплатформенные версии программ под линуксом выглядят убого. Вот есть PyCharm я там пишу код на питоне и она в винде выглядит красиво и охуенно с моим шрифтом Input. Под убунтой... блядь, нутыпонел в общем.

Хотя надо сказать что работать только через сонсольку без гуи и поднимать всякие сквиды-роутеры писать скрипты и прочую хуйню под линь мне нравится, из консоли он прекрасен и никакая спермодесятка никогда даже не приблизится к этому. Короче, инструменты каждый выбирает по вкусу.
>>791024-кун
>>791042>>791070
sage #198 #791040
>>791024
сплошное кукареку на тему производительности. Как и в шапке. Либо неси тесты, либо иди нахуй.
>>791043>>791051
#199 #791042
>>791038
Кстати, я же забыл написать зачем я приложил скриншот. Посмотри на этот скриншот, блядь, в 2016 году нет сортировки по сетке ахах блядь, мне даже добавить нечего, остановите я сойду нахуй.
#200 #791043
>>791040
Шапку писали уважаемые люди, манька. Неси контрпримеры или уебывай. Кококок найдены данные, на которых хаскелл быстрее ассемблера в миллион раз!!!!11111
>>791055
#201 #791051
>>791040

>неси тесты


Не, впизду мне лень, да и похуй. Не хочешь, не верь, все равно я аргумент со скоростью работы не выставлял как основной, так что мне похуй такщемта.
>>791052>>791069
#202 #791052
>>791051
P.S. Хотя своими глазами видел на стэке как кто-то восхищался самонаписанному тесту где шарп натурально ебёт по производительности плюсы. Суть теста не помню, т.к. не шарю и ссылку не дам, лол.
>>791066>>791069
#203 #791055
>>791043
Манька - это ты. А я - уважаемый человек, как ты сам выразился. Но это не меняет того факта, что в шапке тема производительности описана крайне стереотипно и не включает каких-либо примеров.

Их и не может быть вообще-то, потому что никто в здравом уме не будет писать два огромных приложения на разных языках только для того, чтобы сравнить скорость языков.

И, кстати, это не я должен доказывать обратное, а ты - утверждение.

Так что на данный момент есть вопрос без ответа. Что быстрее: ПО на медленном языке с оптимизацией горячих точек на C или ПО на C++.
>>791063
#204 #791063
>>791055

>Их и не может быть вообще-то


>это не я должен


>с оптимизацией горячих точек на C


Вот это да, я такие тройные бочки даже в /po не видел.
>>791079
#205 #791066
>>791052
Берешь и сравниваешь самую хуевую реализацию на крестах и самую лучшую на шарпе, профит. В качестве бонуса можно продемонстрировать простыню говнокода на крестах, подразумевая, что это норма. Я ничего не имею против шарпа, и этот подход работает в обе стороны с двумя любыми языками.
>>791067
#206 #791067
>>791066
Нет нет нет нет, я не настолько тупой, во-первых пример там был достаточно простой, чтобы я смог его понять, и существенных отличий в реализации там не было, во-вторых тот топик на стеке был достаточно популярен, туда набежало куча крутых специалистов (лол) и я уверен, что если бы там было всё как ты описываешь ему бы незамедлительно на это указали (ведь правда?) и обоссали бы, и тогда я бы даже не стал этот пример упоминать. Сейчас пытаюсь найти тот тред, безуспешно.
#207 #791069
>>791051

>Не, впизду мне лень


Тогда иди нахуй

>>791052
Либо это сравнение производительности библиотек, либо пиздишь. Правильный код после компилятора C++ ты хуй оптимизируешь, так что сказки о том, что че-то там быстрее эквивалентного c++'сного кода, можешь втирать, например, в C#-треде.
#208 #791070
>>791038

>никогда не бывает пруфов зарплат/квалификации


какие пруфы тебя устроят?
>>791075
#209 #791075
>>791070
Фото рассчётных листков с указанием должности, любые фото сертификатов с пруфами. Фото полузамазанных бейджей из яндекса/интела с пруфами (хотя последнее ладно, понятное дело что не все хорошие специалисты в яндексах работают). То есть вот пишет ебанутый про анального господина и все такое там, и чтобы прям рядом фотка какого-нибудь сертификата по специализации RHEL и т.д. Суть в том, что я себе такую ситуацию просто даже вообразить не могу, т.к. не могу вообразить ни одного из многочисленных микрософт/циско/джунипер/авайя/линукс профешшионалов с которыми я общался говорящими то, что говорят обычно в /s/.
#210 #791079
>>791063
А вот и аутисты подъехали.
Еще раз: нет никаких вменяемых сравнений одного и того же продакшен кода ПО на разных языках. Поэтому формально нельзя говорить, что проекты на C++ работают быстрее, чем проекты на других языках. Маня-тесты каких-нибудь коллекций будут либо одинаковыми(например в питоне словарь и массив - простые обертки над C-кодом, как и половина стандартной библиотеки), либо нихуя не будут отображать ситуацию в продакшене, потому что умные люди запилят критические места на C.

Так что спор на тему "язык A быстрее языка Б" в наше время - яркий представитель специальной олимпиады.
>>791084
#211 #791080
>>790918
Спасибо. Я понял,
#212 #791084
>>791079

>нет никаких вменяемых сравнений одного и того же продакшен кода ПО на разных языках


есть http://benchmarksgame.alioth.debian.org/
>>791089
79 Кб, 807x623
#213 #791088

>Скачан: 1232 раза


Хуя. Это получается, у меня будет ещё 1200 конкурирующих макак, и расчитывать на работу в РФ, связанную с крестами, ньюфагу смысла нет?
>>791188
#214 #791089
>>791084
Где ты увидел продакшен код по ссылке, мудила?
Сплошные алгоритмы там.

Поясняю для совсем тугих: бизнес-логику пишут на удобном языке, потом ее гоняют профайлером и переписывают критические участки на C++ или C.
>>791090>>791175
#215 #791090
>>791089
Мы вам перезвоним
Code block : запустить два проекта одновременно! #216 #791159
Гайз, поясните за code block's,
под unix : как заRUNить два проекта одновременно (они друг другу пакеты шлют, вроде) не хочу изворачиваться.
Просто видел видос, где парень просто среду дважды запустил, но я не понял как он это сделал.
>>791673
#217 #791175
>>791089

>бизнес-логику пишут на удобном языке


Этот удобный язык может быть и достаточно быстрым чтоб не переписывать.
Scala, Java, C#, Lua.
#218 #791188
>>791088
50% из них даже не откроет скачанное.
25% только посмотрят и закроют.
12% будут пытается что-то сделать больше 1 часа.
>>791197>>791554
49 Кб, 640x360
#219 #791194
Ебучий будильник не сработал. Проспал лишних три часа, в течение которых видел бугуртный сон про бывшую и ее ебыря. Проснулся, пришел на кухню, батя как раз доел мой сыр. В доме ебаный мороз +12, горячей воды нет уже больше недели, я грязный и вонючий, как задница у бомжа. Захожу в свой любимый тред, чтобы хоть немного позитива словить, но и здесь, блядь, за ночь насрали неосиляторы.
>>791230
#220 #791197
>>791188
6% будут изучать длительное время
3% найдут работу
#221 #791230
>>791194
Проиграл с тебя.
#222 #791253
>>790690

>Я прав?


Да. Он где-то там у себя записывает, что память свободна.

>Я блядь один хуй могу взять после этого въебать такое


Где как. Вижуал студия не даёт даже обратить к pi после удаления, XCode же даёт и новое значение присвоить. ideone, как говорил >>790863, обнуляет память.

Я тоже хуй простой, могу деталей некоторых не знать.
#223 #791304
Есть такое задание, ничего больше стандартных библиотек не знаю, чё читать(курить) по теме этого задания??

Есть определенная иерархия папок. Надо все их просканировать на *.h файлы. Во всех папках надо найти все конструкции вида #define IDD_WIZARD_PAGE 101 и распарсить их, составив словари IIDD_WIZARD_PAGE - 101 для каждой папки.
Программа должна уметь:
1) Игнорировать часть папок. Список папок задавать в отдельном файле.
2) Показывать дубликаты. Дубликатом считать если число одинаковое в разных папка, а ID разное.
3) Выводить на экран список занятых диапозонов значений для конкретной папки.
>>791384
#224 #791336
Хочу попробовать Qt, подскажите, есть ли бесплатная версия по аналогии с VS Community?
>>791338
#225 #791338
>>791336
уже нашёл какой-то Open Source там
>>791377
#226 #791377
>>791338
Аноны, чувствую себя идиотом, но как нормально скомпилировать первый хэлоуворлд из книги Шлее "Qt 5.3. Профессиональное программирование на C++"?
#227 #791379
>>786548
Kdevelop топовый.
#228 #791382
http://pastebin.com/3sfRT9Bx
Правильно ли я понимаю, что для реализации метода add мне нужно ещё и "геттеры" добавить для получения x и y у объекта m? В задании ничего не сказано, просто описания методов сделать. Но ведь по-другому же я никак не могу до m.x и m.y добраться (по крайней мере, с текущими знаниями). showmove, насколько я понимаю, предполагает лишь текстовый вывод. Очевидно, что перенаправлять вывод cout'а и парсить полученный текст звучит немного сумасшедше.
>>791386
#229 #791384
>>791304
Напиши на каком-нибудь скрптовом языке и всё.
>>791397
#230 #791386
>>791382
Хм, стоило-таки вслепую попробовать перед постом. http://ideone.com/noyZcG
Внутри метода одного объекта можно обращаться к приватным атрибутам другого объекта того же класса, что ли? Что-то я не врубился.
>>791677
#231 #791397
>>791384
я не могу,у меня задание такое,в общем у меня примерно такие мысли :

Реализовать класс деревьев, у которого для каждой вершины(папки) будет вектор в котором будут лежать указатели на новые вершины(подпапки). Далее будет метод, который будет рекурсивно вызываться и при помощи функций FindFirstFile , FindNextFile заносить директории в вектор вершины дерева, также, будет метод, который позволит из вектора достать эту директорию. Потом, по этим директориям можно будет открывать файлы для записи и для чтения. Также нужно организовать некоторое условие, что если в названии папки есть ".h" то её нужно открывать. Ну, а после уже - парсинг этих файлов.

Хотя мне кажется это какие-то пиздецовые велосипеды,но я лучше ничего не вижу.
>>791408
#232 #791408
>>791397
Умные аноны ещё сказали mapы использовать
sage #233 #791427
>>791377
Съеби.
#234 #791479
>>791377

>Шлее "Qt 5.3. Профессиональное программирование на C++


А че, уже по qt5 вышло?
>>791531
#235 #791488
>>786424 (OP)

>https://goo.gl/qMLAFl


>http://www.padabum.com/x.php?id=15127


>Соединение было сброшено

#236 #791531
>>791479
Уже 5.7 релизнулся.
>>791538
#237 #791538
>>791531
А при чем тут это? Я про книжку, а не про то, какая там версия Qt уже релизнулась.
>>791539
#238 #791539
>>791538
Наверно к тому, что с релиза Qt5 прошло уже 4, сука, года – наверно уж по есть литра, сам-то как думаешь?
>>791872
#239 #791542
>>791377
в qtcreator все должно работать без проблем.
В студии надо аддон ставить неофициальный, т.к. официальный с 2015 вроде не работает
#240 #791545
>>790690
После delete - мы маркаем участок памяти как удаленный. Что с ним будет делать компилятор, ось и так далее - не важно. Сразу ли память освободится? Implementation defined. Самое важное - что любое обращение к удаленному указателю - это UB.
#241 #791554
>>791188

>50% из них даже не откроет скачанное.


Вот кстати знакомо. Половина накачанных мной учебников и просто научпопа лежат "на будущее", когда реально в текущий момент я читаю от силы 2 книжки, читаю постепенно и вдумчиво. Часть уже вообще удалил, потому что передумал изучать описываемые в них темы, лол. Ещё часть не осилю скорее всего никогда, потому что не хватит времени на прочтение "всех хороших книг".
>>791556
#242 #791556
>>791554
На пенсии время будет.
>>791557
#243 #791557
>>791556
Пенсии не будет, сдохнешь раньше.
#244 #791576
Анон, сделай мне код ревью: https://ideone.com/Cl9LQO
Уебищную императивную дрисню не получится сделать красивой, как код на лиспе, но можно улучшить.

На SO подобный код отхуесосили за то, что в функцию передается не итератор, а указатель на Node, и хуесосящий сказал, что надо зделоть что-то вроде Reverse (ListIter head). Но тогда итератор объявляется как нечто вроде typedef ListIter Node * или тут не уверен с использованием using. Но зачем это нужно, если в таком случае итератор это просо псевдоним для указателя на Node?
>>791617
#245 #791617
>>791576
А хули ты сюда вообще зашел? У тебя сишный код без использования C++. cout не в счет.

Зделой классы
>>792113
#246 #791673
>>791159
В настройках чекбокс был Allow multiple instances или что-то наподобею
#247 #791677
>>791386
именно, иначе для копирующих конструкторов и присваиваний надо было через геттеры все кишки наружу вадавать.
#248 #791872
>>791539
Кидай ссылку на книгу от шлее по qt5
(петушок безпруфный)
#249 #791873
>>786554

>Автодополнение


>CodeLite



Обосрался вприсядку. Кривая хуйня, никому не нужная.
>>791896
#250 #791896
>>791873
Ну и пиши в блокноте тогда, вообще никакого пердолинга.
>>791902
#251 #791902
>>791896
Нахуй нужен блокнот когда есть кодблокс?
#252 #791952
А ну-ка, сырные синьоры, расскажите, как вы юзаете ЭКСЕПШОНЫ? По каким гайдлайнам иерархию пишите?
#253 #791962
Что было бы если бы маинкрафт был написан на С++?
>>792020>>792039
#254 #791974
Каеф
71 Кб, 593x660
sage #255 #791988
>>786424 (OP)
Ебануться. Ссылки, указатели. Нихуя не понятно. Ссылка не обьект. Указатель может ссылаться на ссылку, ссылка на указатель нет. Ебанутая теория просто. Читаю Липмапа из шапки. Или это перевод хуевый либо я тупой. Невозможно понять ебанутый сухой текст с припезднутыми примерами, указатель в указателе Пошло нахуй.

5:11 утра, да я ебнутый
>>791991>>792154
42 Кб, 1366x768
#256 #791989
Есть крестобляди-фрилансеры с Upwork.com? Есть работа вообще? Сам пишу на Ruby on Rails, относительно успешно. Неплохо знаю няшную, но работа по ней даже не ищется (там даже скилла "с" в БД нету). Думаю С++ подтянуть и иногда брать заказы, чисто для разнообразия. Немного поискал, как-то маловато работы на первый взгляд. Поделитесь опытом, что делаете, легко ли заказы находить.
>>792007>>792037
#257 #791991
>>791988
Страуструп ещё сложнее.
>>792006
sage #258 #792006
>>791991
Наоборот таки, у него все последовательно и для даунов. Начинать советую с него.
#259 #792007
>>791989
Все нормально с работой.
#260 #792020
>>791962
Ебучие квадратики бы не лагали так на исторической хуите, как лагают на топовых железках сейчас.
#261 #792034
А нахуярте заголовок следующего треда еще больше - у меня окошко избранного только полэкрана занимает.
>>792037
#262 #792037
>>792034
Я предлагал закинуть шапку в пастебин, но у них тут какое-то голосование проходило и они так решили. Мде.
>>791989
На фрилансе только qt и computer vision (opencv).
Слышал, что там 200 зеленых сняли с некоторых за услуги. С тебя брали?
>>792260>>792431
#263 #792039
>>791962
есть minetest
#264 #792113
>>791617

>Зделой классы


Попытался сделать шаблонный класс, но он не инстанцируется для строк. Что я делаю не так?
Как улучшить дизайн класса?

https://ideone.com/z6ohEn
>>792116>>792127
#265 #792116
>>792113
Блять, ебаный C++. Когда из простого класса делал шаблон, в конструкторе, принимающем istream, оставил T temp = 0, которое было для инстов. И компилятор на это даже не ругнулся.
#266 #792127
>>792113
Для возможности вызывать методы цепочкой добавил уебищной дрисни в сигнатуру reverse().

https://ideone.com/VhHI57
>>792172
#267 #792154
>>791988
Указатель на ссылку не может существовать, так как ссылка - не объект.
Ссылка на указатель может существовать, так как указатель - это объект.
У тебя очень плохой перевод.
#269 #792260
>>792037
Не шапку, а заголовок.
2 Кб, 227x78
#270 #792351
Законно ли так?
или я ебался в глаза ,читая Бьорна?
>>792353
#271 #792353
>>792351
Законно, но ты таким образом только проблем наберешь.
>>792355>>792365
#272 #792355
>>792353
вот я хочу спросить за подводные камни.
задача похожа на thread из стл11 в классе. так чтобы я юзал методы из класса в функции треда
#273 #792365
>>792353

>только проблем наберешь.


и в каком плане проблем?
выстрел в ногу или течь в памяти?
просто как реализовать в функции не в методе класса работу с обьектом класса?
>>792367
#274 #792367
>>792365
Сделать в классе методы, которые эта функция сможет подергать у объекта, который в нее передали?
>>792369
4 Кб, 357x83
#275 #792369
>>792367
ну тоже вариант, но думаю не вмоей ситувации
функция это уже метод который я дернул с класса
пилерейтет
#276 #792387
Почему CLANG не компилирует этот код и ругается на отсутствие user-defined конструктора, если экземпляр класса сделать константным?

https://ideone.com/I7w3oJ
>>792419
#277 #792419
>>792387
Бедненький, тебя наверное в гугле забанили?
Ну я помогу: http://stackoverflow.com/questions/26077807/why-does-gcc-allow-a-const-object-without-a-user-declared-default-constructor-bu
>>792433
#278 #792431
>>792037

>Слышал, что там 200 зеленых сняли с некоторых за услуги. С тебя брали?


Нет. Что за бред? Upwork, конечно, охуел в последнее время, качество сайта и программыы падает, а комиссии растут, но не настолько, чтобы бабло без предупреждения забирать.
>>792789
sage #279 #792433
>>792419
Спасибо, няша. Можно я тебе отсосу?
#280 #792513
Реквестирую помощи.
Есть одна замечательная функция.

JNIEXPORT void JNICALL Java_ru_test_ogles_JniWrapper_setTouchPoint(JNIEnv env, jclass type, jfloat x, jfloat y)

Которая как мы видим принимает jfloat. Это jfloat я хочу напечатать в консоль с помощью

int __android_log_write(int prio, const char
tag, const char *text);

Так вот мне накастовать на jfloat char или ещё какую конверсию провести
>>792656
194 Кб, 1001x306
#281 #792626
Ребята, объясните, чему тут Прата говорит что если взять адрес от массива, то:
"применение операции взятия адреса & к имени массива позволяет получить адрес всего массива..."
Что, какой нахуй весь массив блядь, если это просто адрес? Адрес ебучего первого элемента? Поясните, пожалуйста
48 Кб, 755x323
#282 #792632
>>792626
Вроде как в этом смысл, да? Тип эта программа выдает такие результаты? Именно это имел товарисч Прата?
#283 #792656
>>792513
snprintf(buf, sizeof(buf), "here comes my jfloat %f",
x)
>>792664
#284 #792664
>>792656
Я хочу через кошерный андроид лог выводить.
>>792678
#285 #792678
>>792664
Я понял. Эта хуйня мне буфер заполняет, который я могу затем принтить. Какой ебаный гемор с вашими ссями.
>>792679
#286 #792679
>>792678
Так это проблема с дизайном API NDK, а не сями.
>>792680
#287 #792680
>>792679
Я бы не сказал. Вот например следующая проблема.
Я хочу сделать какой нибудь дженерик класс, который бы мне печатал любую хуйню, какую бы я в него ни запихнул.
Как мне передать в функцию любую переменную(объект), не перегружая функцию несколько раз.
>>792681
#288 #792681
>>792680
Шаблоном.
>>792720
6 Кб, 380x295
6 Кб, 380x295
#289 #792718
Как отправить правильно сообщение через SendMessage? При нормальном нажатии кнопки - первый пик с "Помещено", а у меня почему-то как на втором - "Отправлено". Что я делаю не так? В остальном сообщения одинаковые в Spy++.
#290 #792720
>>792681
А как?
>>792721
#291 #792721
>>792720
Точно так же как сделал бы в другом языке.
>>792726
#292 #792726
>>792721
Ну
В сях это просто так не работает. Я уже чутка охуеваю.
>>792729
#293 #792729
>>792726
Что просто так не работает? При чём тут язык? Если в яве был бы такой же уёбищный апи – это была бы проблема языка?
>>792734>>792736
#294 #792734
>>792729
Правильнее "если бы на яве такой же апи написали".
#295 #792736
>>792729
Причем тут уебищный апи? Да, я с этим согласен, он уебищный.
Но на данном этапе я хочу сделать дженерик класс, который бы этот уебищый апи к логгеру убирал бы от меня. Ты предложил сделать это темплейтами, но т.к. языка я по факту не особо знаю, то у меня с имплементацией этой задачи возникают проблемы.

Хидер:

template<typename T>
class Logger {
public:
void d(char const TAG, T value);
};

Имплементация:

template<typename T>
void Logger<T>::d(char
const TAG, T value) {
char buffer[64];
snprintf(buffer, sizeof(buffer), "%d", value);
__android_log_write(ANDROID_LOG_DEBUG, TAG, buffer);
}

Попытка использовать из другого места:

Logger<jint> *logger;
logger = new Logger();
logger->d(TAG, x);

В итоге получаю пизды:
Error:(26, 18) error: expected type-specifier before 'Logger'
#295 #792736
>>792729
Причем тут уебищный апи? Да, я с этим согласен, он уебищный.
Но на данном этапе я хочу сделать дженерик класс, который бы этот уебищый апи к логгеру убирал бы от меня. Ты предложил сделать это темплейтами, но т.к. языка я по факту не особо знаю, то у меня с имплементацией этой задачи возникают проблемы.

Хидер:

template<typename T>
class Logger {
public:
void d(char const TAG, T value);
};

Имплементация:

template<typename T>
void Logger<T>::d(char
const TAG, T value) {
char buffer[64];
snprintf(buffer, sizeof(buffer), "%d", value);
__android_log_write(ANDROID_LOG_DEBUG, TAG, buffer);
}

Попытка использовать из другого места:

Logger<jint> *logger;
logger = new Logger();
logger->d(TAG, x);

В итоге получаю пизды:
Error:(26, 18) error: expected type-specifier before 'Logger'
>>792768
#296 #792768
>>792736
auto logger = Logger<jint>>*();
>>792769>>792772
#297 #792769
>>792768
Макаьа как обычно всё через анус сделала. Короче – ты шаблон после new пребал.
>>792772
#298 #792772
>>792769
>>792768
Ok.

Logger<jint> logger = new Logger<jint>();
logger->d(TAG, x);

Получаю

Error:(28) undefined reference to `Logger<int>::d(char
, int)'
>>792775
#299 #792775
>>792772
http://ideone.com/xfeWEd
Ты серьёзно? Иди лучше книжку по плюсам хоть вертикально прогляди для начала.
>>792783>>792784
#300 #792777

>char const


Местами ничего не попутал? const в плюсах в зависимости от расположения может означать 3 разные вещи.
#301 #792779

>Error:(28) undefined reference to `Logger<int>::d(char, int)'


Давайте поиграем в гадалочку x - int, а шаблон - jint?
>>792783
#302 #792783
>>792775

>Ты серьёзно?


Да.

> Иди лучше книжку по плюсам хоть вертикально прогляди для начала.


Нет.
>>792779
typedef int jint;
Так что тут ни в какую гадалочку играть не надо. Тип может вообще любой прилетать. Хоть jfloat который по факту float.
>>792794
#303 #792784
>>792775
Ах да, твой код выдает
Error:(27, 10) error: 'logger' does not name a type
Error:(31, 5) error: 'logger' was not declared in this scope
>>792794
#304 #792787
В идеале хотелось бы вообще иметь статическую функцию, которой похуй на то что я в неё пихаю и чтоб она красиво вызывалась как
Logger.d(TAG, любой аргумент);
Почему это блять так сложно?
>>792794
53 Кб, 1068x959
#305 #792789
>>792431
На воркаче скинули
>>792791>>792796
#306 #792791
>>792789
А, так это 20% с заказа. Не заметил.
#307 #792794
>>792783

>нихачу учится, хачу хуякхуяк и в продакшен


Захочешь как что-то сложнее шаблонной функции понадобится.
>>792784

>c++98


Это вообще пушка.
>>792787
http://ideone.com/4s3mwn
Хуй знает есть ли в твоём прогнившем древнем говне вместо компилятора дедуктивный вывод шаблонов, если будут ошибки - подставь <int> перед скобками.
>>792800
#308 #792796
>>792789
Что надо было за 700 баксов сделать?
>>792798
#309 #792797
>>792626
ЭТО ИСКЛЮЧЕНИЕ ИЗ ПРАВИЛА
ТЫ ЧТО В ГЛАЗА ДОЛБИШЬСЯ ТАМ ЖЕ НАПИСАНО
#310 #792798
>>792796
Не знаю, спроси того кто скинул в апворк треде на /wrk/.
#311 #792800
>>792794
Спасибо. Но не работает.
>>792908
#312 #792908
>>792800
Ну и пошел нахуй тогда со своим "Не хочу учиться, а хочу жениться"

мимо-другой-анон
>>793856
#313 #793094
Анон, как правильно перегрузить оператор << ?
https://ideone.com/rQIdHF

1. Если объявляю его как член класса, возникает ошибка "Оператор должен быть бинарным, но он принимает 3 аргумента".
2. Если объявляю как friend, то я не знаю, как правильно обратиться к его внутренним данным и типам для вывода списка.
>>793119
51 Кб, 1366x768
#314 #793104
>>792626
Я уверен, что имеется ввиду тип указателя, который возвращается при использовании имени массива или при использовании указателя на массив. Смотри скрин.
>>793359
#315 #793119
>>793094
Читать умные книжки не пробовал? В страуструпе написано. А еще написано на cppreference (ее пилят чуваки из комитета стандартизации)

http://en.cppreference.com/w/cpp/language/operators
>>793145
#316 #793126
https://play.google.com/store/apps/details?id=com.sololearn.cplusplus
Норм прога? Или какую лучше выбрать?
>>793141>>793149
#317 #793141
>>793126
нинужно
#318 #793145
>>793119

>Читать умные книжки не пробовал?


Да блять, я и так читаю Липпмана, но до нужной главы еще не дошел. Обычно мне хватало гугла для решения проблемы, но теперь я в тупике.
#319 #793149
>>793126
Лучше используй cppreference, больше толку будет. Алсо, C4Droid (который у него в похожих) это годнейший порт gcc за авторством местного анона, рекомендую.
>>793360
#320 #793359
>>793104
Понял, спасибо
#321 #793360
>>793149

>годнейший


>gcc


/0
>>793581
#322 #793581
>>793360
Вот образцовый пример, глядите, посоны. Эти необучаемые вырожденцы не понимают даже, что от порядка термов зависит семантика, а вы хотите, чтобы они понимали кресты. Вероятно, подобно тому, как "годнейший порт gcc" волшебным образом мутирует у них на устах в "порт годнейшего gcc", многочисленные дефекты родительских умов превращаются в их собственные, только уже в реальности.
>>793624
#323 #793624
>>793581
Проблема ещё и в том, что сам GCC именно что годнейший.
>>793987
#324 #793700
сап аноны, mvs подзаебал, лагает пизда просто, посоветуйте удобный ide который не лагает с норм компилятором
114 Кб, 908x432
#325 #793787
Пиздец, не отдупляю, что здесь написано, настолько шизофренический перевод. Судя по примерам, они вообще о другом.
#326 #793813
>>793700
Qt creator
>>793860
#327 #793856
>>792908
Там проблема в линковке, вся хуйня должна работать, а он говорит что хуй не могу референс найти. И такая хуйня с любой либой
>>794070
#328 #793860
>>793813
двачюю. Qt очень мил
#329 #793891
>>793700
>>793700

>Windows-петух


в блокноте ебашь
>>793903
#330 #793903
>>793891
нахуй твой блокнот, советуй что нибудь годное
#331 #793912
>>793700
Xcode вполне себе, но в vs дебажить поудобнее.
>>793929>>793932
#332 #793916
>>793787
Без знания ангелького C++ не нужен.
#333 #793929
>>793912
но у меня не мак(
>>793931
#334 #793931
>>793929
Как будто это нельзя решить за 20ку на какой-нибудь барахолке
#335 #793932
>>793912

>но в vs дебажить поудобнее


Типа F11 удобнее жать, чем F6? Стабильность дебагеров одинаковая. Содержимое окошек одинаковое. Плюс lldb к тому же умеет в вызов функций прямо из дебаг-консоли.

vs сосет в этом плане.
#336 #793934
Анон, помоги. В stl можно создать объект, и передать в него функцию и параметры. Например:
auto t = std::thread(foo, 2);
Как мне сделать такое для своего класса?
#337 #793937
>>793934
гугли perfect forwarding, std::forward
#338 #793946
>>793934
а) Variadic template и всё, что с ним связано.
б) callable

Ну и тупо посмотреть как работает thread
#339 #793987
>>793624

>Проблема: GCC годнейший


MSVC-евангелист, что ли?
>>794073
#340 #794070
>>793856
Ебтвою мать. Я все понял. Конфигурация идет полностью через гредл, а не по старинке через android.mk и application.mk. Из-за этого ни мои либы ни встроенные либы не работали.
#341 #794072
>>793787
Они о членах, очевидно же.
#342 #794073
>>793987
Google C Compiler
#343 #794149
Ребята, поясните дауну за память. Например, у меня есть компуктер, есть код программы, записанный в файле temp.cpp
код такой
http://pastebin.com/7QVRuyL6

#include <iostream>
using namespace std;

int main()
{
int *p = new int;
return 0;
}

Я, далее, использую g++ для создания исполняемого файла temp. Затем я запускаю программу. Что произойдет? Я не освободил память, теперь где-то в оперативной (оперативной?) памяти у меня 4 байта ебаные схавала моя прога? Навсегда? До следующего ребута? До завершения выполнения программы? Простите, я очень тупой, но хочу разобраться.
#344 #794150
>>794149
блядь, \t табуляция ну вы поняли, скопирнул с пастебина
#345 #794152
>>794149
До завершения твоей программы. На дворе не 85 год, и ОС ныне не работают в реальном режиме.
>>794161
#346 #794161
>>794152

>ОС ныне не работают в реальном режиме.


тут канешна хуйню сморозил

всё ещё есть мк/цпу без mmu
#347 #794165
>>794149
почитай Таненбаум "Операционные системы". Небольшая книжечка - и всё понятно станет ( я ещё и на английском, помню, читал - один хрен всё понятно, слов не много используется )
#348 #794185
Студент. Завтра иду на собеседование программист разрабатчик С++. Какой минимум я должен знать, анон? Я переживаю
#349 #794194
>>794185
что такое виртуальная функция и как оно работает
что такое auto_ptr
как делать хуяк-хуяк и в продакшн
>>794877>>794878
#350 #794196
>>794185
Как использовать не знаю, но знаю шо это. У Таненбаума бегло прочитал.
Аутоптр ушел гуглить. Пиши еще
#351 #794256
>>794185
Удваиваю вопрос.
Хочу из джавабляди перекотится в плюсогосподина.
Что нужно осилить в первую очередь? Зогплаты выше? Геморрой стоит свеч?
#352 #794290
>>786424 (OP)
Если я не понимаю книжку Стенли Липмана я безнадежен или можно обмазаться чем-то по проще.
#353 #794333
Объясните, чем auto_ptr/unique_ptr отличаются от размещенных в стеке объектов (кроме того, что это указатели)? В смысле, зачем это нужно?
>>794449
#354 #794335
>>794185
зависит от конторы, не плохо шарить хотя бы в stl, если пишут под винду - winapi,знать стандарты до с++14,могут задавать странные вопросы,еще про линуху
#355 #794449
>>794333
Ну, очевидная причина - кто-то создает объект, которым потом пользуются из других мест и функций. Для этого используется куча и указатели на нее, потому что иначе пришлось бы лепить огромный ком из всех существующих данных и постоянно футболить его между функциями через стек, несмотря на то, что каждая функция использует ничтожную долю этих данных. Был бы каждый раз дичайший оверхед на копирование этого дерьма, проблемы с удалением чего-либо из середины кома, ну ты понел. Куча же позволяет схоронять данные на стороне, чтобы они не протухали и ждали своего часа, а доступ к ним обеспечивается через указатели.

Менее очевидная, но не менее важная причина - оптимальность. Даже если объектов мало, они могут быть большими, а размер стека часто довольно жестко ограничен (например, 1МБ, в который, например, не влезет массив уже из пары миллионов чисел). Если пихать такие данные в стек (например, передавая по значению), то стек может очень быстро закончиться и настанет пиздец. А куче доступна практически вся оперативная память, поэтому туда можно пихать все, не особо задумываясь о размере. А на стеке оперировать уже маленькими указателями-дескрипторами.
>>794454
#356 #794454
>>794449

>Ну, очевидная причина - кто-то создает объект, которым потом пользуются из других мест и функций.


А как он может использоваться ещё где-то, если он unique?
>>794477>>794505
#357 #794477
>>794454
smart-pointer'ы привязывают время уничтожения объекта к стеку. Как и обычное выделение на стеке. Но стек довольно маленький (в macos, например, 8МБ) и на нем нельзя размещать все подряд. Поэтому мы выделяем память в куче, но время жизни привязываем к стеку.
#358 #794505
>>794454
unique используется для задания владения, а не доступа. Ну вот представь, что у тебя есть дневничок, ты пишешь в него разную ебалу, а другие аноны ее читают и комментируют. Но владеешь им только ты, и только ты можешь принять решение снести его на хуй. Когда снесешь - никто больше не сможет его читать. В терминологии крестов у тебя бы был unique_ptr на дневничок, и ты раздавал бы анонам обычные указатели или ссылки на него, которые не дают права владения и могут протухнуть. Аналогично, если бы ты создал конфу, живущую до последнего читателя, то у всех был бы shared_ptr, и единоличного владельца бы не было.
>>794560
#359 #794560
>>794505
Ты только что описал weak_ptr. unique_ptr это, например, тебе заказали прокачать аккаунт в дотке. Тебе дают логин и пароль, изначальный владелец не может войти, пока ты играешь (ограничения стима). В один момент времени аккаунтом владеет только один человек. После того, как ты прокачал, ты отдаешь аккаунт обратно, чтобы тот играл в дотку.
sage #360 #794877
>>794194

>что такое auto_ptr


Тонко.
sage #361 #794878
>>794194

>что такое виртуальная функция и как оно работает


Это чо, ABI учить o_O?!
>>794884
#362 #794884
>>794878
ABI - это не про это. Это про то, как растет стек, какой порядок бит используется, как передаются аргументы в функции и т.д. А как реализовать виртуальные функции - это забота рантайма C++
>>794885
sage #363 #794885
>>794884

>ABI - это не про это...


https://mentorembedded.github.io/cxx-abi/abi.html#vtable

> виртуальные функции - это забота рантайма C++


С этого места поподробнее, пожалуйста.
>>794887
#364 #794887
>>794885
да, ты прав
#365 #794991
Господа, скиньте какие-нибудь студенческие лабы по C++, хочу знать, что они из себя представляют.
>>794992>>795004
#366 #794992
>>794991
А мне подкиньте тему для дипломной работы.
>>795214
sage #367 #795004
>>794991
Написать красно-черное дерево.
#368 #795035
>>793787
Тут написано следующее. Костыли на си++ пишутся таким образом:
1) Ты создаешь класс. У него есть поля (переменные, структуры и т.д). А также методы.
2) Ты можешь поместить поля в протектед и теперь снаружи сможешь получать к ним доступ только через специально написанные для этого методы. Обычно они называтся геттеры и сеттеры (get и set)
"Захуя все это нужно?", -- спросишь ты и совершишь большую ошибку, т.к. в тебе впервые закрались сомнения в адекватности си++-манямирка. Чем больше ты будешь изучать си++, тем более нелогичным тебе будет казаться то, как он устроен. Однако, релизигиозные фанатики будут продолжать тебя уверять, что это лучший путь жизни. Сектанты, хуле.
#369 #795039
>>795035
Нет, судя по примеру там написано то, что доступ к переменным и методам можно получить либо через ., либо через -> с помощью переменной. Для доступа к типу, определенному в классе, надо использовать :: и имя класса.
#370 #795073
>>795035
Сразу видно дебила, который ни разу не писал что-то большое на C. Там ты будешь заниматься абсолютно тем же, что и в C++, но руками эмулируя функции-методы наследование, полиморфизм и ограничение доступа к данным.
#371 #795089
>>795035

>Захуя все это нужно?


Потому что это логично. Инкапсуляция же. Данные должны изменяться ТОЛЬКО определёнными в классе методами. В Руби, например, вообще невозможно сделать доступные снаружи переменные экземпляра.
#372 #795110
дошел короч до темы decltype, аноны бля эту хуйню вообще кто нибудь использует? decltype и auto вообще нужны?
>>795131>>795172
3 Кб, 314x31
#373 #795128
int b = 3;
если переменная b в 2 скобках это значит что , d ссылка на переменную a ?
>>795131
#374 #795131
>>795110
auto - определенно стоит использовать, decltype тоже помогает, хотя реже. В основном, в шаблонах.
>>795128
Это особенность работы decltype. Где-то я читал объяснение, что выражение в круглых скобках рассматривается, как lvalue, поэтому выводится тип как "ссылка на тип a". Хотя могу ошибаться.
>>795133
#375 #795133
>>795131
спасибо анон, а не подскажешь когда нужно и когда не нужно использовать auto, я не очень понимаю для чего он
>>795136>>795139
#376 #795136
>>795133

> я не очень понимаю для чего он


чтобы писать auto вместо std::iterator<std::vector<std pair<>>... (еще километр говна)
>>795137>>795139
#377 #795137
>>795136
до такого говна я еще не дошел, спасибо)
#378 #795139
>>795133
>>795136
Да, типа того. Ну и без auto ты никак не сможешь определить лямбду, потому что ее тип выдумывается компилятором самостоятельно.
Ну и вообще удобно использовать в любом месте, чтобы не приходилось менять тип в сотне мест.
Вообще, можешь посмотреть примеры использования в гайдлайнах от Страуструпа:
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
#379 #795144
>>795139
годно, спасибо
#380 #795172
>>795110
Укатывайся в джяву.
>>795206
#381 #795206
>>795172
говно ваша джява, сам катись.
#382 #795210
>>795139

>Ну и без auto ты никак не сможешь определить лямбду, потому что ее тип выдумывается компилятором самостоятельно.


Вась, а ты уверен что как следует просмотрел доку?

[](myYobaLambda arg) -> bool {
return true;
}
>>795232
15 Кб, 157x200
#383 #795214
>>794992
Сделать библиотеку, реализующую Haskell.
>>795219
#384 #795219
>>795214
Найс, забрал
#385 #795228
>>795139

> Ну и без auto ты никак не сможешь определить лямбду


Смог http://ideone.com/6nV7Q6 ЧЯДНТ?
>>795233
sage #386 #795232
>>795210
Мань, ты уверен, что уже научился читать?
>>795299
sage #387 #795233
>>795228

>ЧЯДНТ


Стираешь типы.
>>795236
#388 #795236
>>795233
И ничего я не стирал. Купил новую.
#390 #795262
Нахожусь в середине книги Липмана. С какой книги мне сейчас лучше начать почитывать Майерса? 2015 год подойдет?
>>795263
#391 #795263
>>795262

>Нахожусь в середине книги Липмана.


Как, его чеченцы не защемили?
#392 #795297
>>794185
Студент из репортинг
Дали анкету, 9 заданий, нужно написать их на листочке:
Сумма цифр в числе
Побитовый реверс числа
Среди четырех миллиардов интов найти такой, который не встречается в массиве
Среди кучи точек на плоскости найти те, которые образуют треугольник с макс периметром.
Сделал вроде как все. Были еще задания, но я не помню их уже.
>>795300>>795379
#393 #795299
>>795232
Мне кажется что всё же ты верблюд. В моём примере вывода типов нахуй не нужно, а вот ты ничего не обосновал за базар свой.
>>795337
#394 #795300
>>795297

>Среди четырех миллиардов интов найти такой, который не встречается в массиве


Какой максимальный размер массива? Хэш-таблица тут сойдет?
>>795305
#395 #795305
>>795300
Максимальный размер - четыре миллиарда, ты читать умеешь? Можно использовать до 1Гб памяти
>>795310
#396 #795310
>>795305
Ты ебнутый? У тебя есть последовательность четырех миллиардов инстов и есть какой-то массив. Среди интов надо найти значение, которого нет в этом массиве. Если ты собрался искать значения, которого нет среди миллиардом интов, ты получишь бесконечное количество таких чисел, потому что множество целых чисел счетно.
>>795315>>795344
#397 #795315
>>795310
Я понял, что хуево написал условие. Тебе дан массив, размера 4 миллиарда. Ты должен вернуть такое число, которое не присутствует в этом массиве
>>795317
#398 #795317
>>795315

>Ты должен вернуть такое число, которое не присутствует в этом массиве


Ебать дебил. Целых чисел бесконечное количество, а твой массив конечен. Поэтому можно вернуть дохуя чисел, которых в массиве нет. Например, любое целое число, которое не помещается в тип int.

Что за мрази дают такие тупые задания? Вас, дегенератов, надо всех через матфаки пропускать, чтобы учились давать четкие формулировки и не использовать термины, для которых нет однозначного определения.
>>795336>>795339
Шифратор-Дешифратор на AES-128 Кокопа #399 #795322
Ребзи, может кто раскидать как реализоваать весь алгоритм AES-а на пальцах желательно, знаю что за чем идет, но не знаю как применить и с чего начать
>>795348>>795449
#400 #795336
>>795317
Че такой агрессивный, сука?
>>795340
sage #401 #795337
>>795299

>кажется


хуяжется

> В моём примере вывода типов нахуй не нужно, а вот ты ничего не обосновал за базар свой.


Всем (кроме тебя) ясно, что там имелось в виду.
>>795342
#402 #795339
>>795317
Двачую
#403 #795340
>>795336
Че такой простой, сука?
>>795343
#404 #795342
>>795337
Поведение auto можно сымитировать с помощью вывода типа (в частности, с помощью std::function), так что технически он прав.
>>795395
#405 #795343
>>795340
Потому что мамашу твою ебал
#406 #795344
>>795310
Я так полагаю, что размер исходного массива - 2^32 - 1, тип всех чисел в массиве - uint32_t, и нужно найти число из множества uint32_t, которое не входит в изначальный массив. К тому же дают еще 2^30 байт памяти сверху?

Задачка для даунов.
>>795347>>795357
#407 #795347
>>795344
Алсо, где таких даунов набирают?
Пошел нахуй, #408 #795348
со своим говном с лаб.

>>795322
#409 #795357
>>795344
В условии говорилось именно 4 миллиарда, не 2^32 - 1. Как бы делал?
>>795378
#410 #795378
>>795357
Отсортировать массив, найти два последовательных элементов массива, у которых разница > 1. Вернуть значение между ними. Если такого нет, вернуть элемент меньше минимального или больше максимального - смотря, что вылазит за границы исходного типа.
O(n*logn) по времени, O(1) по памяти
>>795383
265 Кб, 1280x960
#411 #795379
>>795297

>Побитовый реверс числа


H4XoR неспешно вкатывается, проводя всем по губам.

https://ideone.com/SDXDH5
#412 #795383
>>795378
Тоже думал над этим, но O(n log n), при N = 4e9 это же пиздец. А что если генерировать рандомный int, а потом проверять на его наличие?
Если все элементы различны, то шанс, что рандом не присутствует ~ 7%. Проверка за О(n) и скрытых констант нет, и массив не меняем (может его нельзя менять? в условии ничего не сказано было).
>>795390
#413 #795384
>>795379
Ты действительно выебываешься выполнением такого простого задания?
#414 #795386
>>795379
Олимпиадники как всегда хуже червей-пидоров: код не читаемый, средств языка не знают, зато самомнения выше крыши.

https://ideone.com/4u9iKm
>>795623
#415 #795390
>>795383
Время худшего случая с сортировкой - O(32 * n). Время в твоем решении вообще недетерменированно.
>>795391
#416 #795391
>>795390
Быстрая сортировка так-то тоже не детерминирована
>>795393
#417 #795393
>>795391
Что ты несешь, поехавший? В быстрой сортировке худшее время определено, а статистические методы используются только для выбора опорного элемента, чтобы смягчить худший случай.
>>795394
#418 #795394
>>795393
Ой, я мудак Но мне мой вариант больше нравится
>>795399
sage #419 #795395
>>795342

>Поведение auto можно сымитировать с помощью вывода типа


auto это и есть вывод типа

> с помощью std::function


std::function это не вывод типа, это type erasure
>>795403
#420 #795399
>>795394
Твой вариант вообще неправильный. Можно еще шаманов спрашивать, какого элемента в массиве нет - результат будет тот же.

И кстати: вероятность, что рандомного элемента нет в массиве, в худшем случае будет составлять 2^(-32)
>>795439
sage #421 #795400
>>795379
prog.cpp: In function 'int main()':
prog.cpp:30:2: error: expected '(' before '{' token
{
^
prog.cpp:31:3: error: 'pushad' was not declared in this scope
pushad
^

В голос с ксакепа.
sage #422 #795403
>>795395
auto - это одно из двух мест, где применяется вывод типа. Второе место - шаблоны. Так что auto всегда можно выразить через шаблоны.

>std::function это не вывод типа, это type erasure


Выебнулся, молодец. Только там все равно используется вывод типа.
>>795548
#423 #795439
>>795399

>И кстати: вероятность, что рандомного элемента нет в массиве, в худшем случае будет составлять 2^(-32)


Нит
#424 #795446
Анон, недавно у меня была книга про алгоритмы на графах с примерами на C++, а потом я ее потерял. Может, здесь кто-то сможет напомнить, что это была за книга? Все алгоритмы были реализованы в виде классов.
#425 #795449
>>795322
Берёшь cryptopp, botan или ещё чего. Смотришь. Реализовываешь.
sage #426 #795548
>>795403
Как на второй курс перешёл? Без троек?
(Автор этого поста был предупрежден.)
#427 #795592
>>786424 (OP)
Поцаны, какой поставить свжий компилятор, и как? Под шиндоус, дайте ссыль на мануал попроще
Проверяю местных экспертов. #428 #795604
shared_ptr содержит джва указателя: указатель на отслеживаемый объект и на control structure. Последняя, в свою очередь, хранит счётчик shared-ссылок, weak-ссылок и опять же указатель на отслеживаемый объект.

Вопрос: зачем дублировать указатели на объект?
#429 #795611
>>795604
Предвидя "ко-ко-ко, контрольная структура ещё хранит указатель ни деструктор" и "ко-ко-ко, ещё может хранить сам объект в контрольной структуре": вопрос в том, зачем дублировать указатель на объект, а не в этом.
#430 #795618
Вечер в хату, /pr/-анонимусы. Я студент не пиздите ногами, окончил второй курс, заодно пройдя курс крестов и явы в вузике. Второе понравилось сильно меньше, ибо если с крестами я писал код, и если он не работал, то я не понимал почему, пока не пороюсь на стаковерфлоу, а в яве я писал код, и не понимал почему он работает. Следовательно первый я пытался вылизать, и искал красивые решения, то во втором случае я просто клал мпх, и шел дальше. Вся моя практика ограничилась лабами, пусть их было и немало, и они были не уровня джавараша, а нормальные такие, строчек по тыщи 2 (игорь там написать с гуем на кьюти, например). Ну и препод по хардкору угорал, ибо сам на крестах собаку съел, и тимлид крестового отдела в мощной конторе. Ну ближе к делу: я решил связать будущее с цпп, хотя я понимаю, что можно и говна поесть на этом поприще (возможно понимаю не до конца, поскольку этот текст я пишу). Живу в дс, поэтому какие-никакие вакансии имеются на новичков, пусть и не оче много. Из "ачивментов":
1.Освоил курс сишечки, напару с к&р, поэтому в байтоебстве что-то понимаю.
2.Прочитал [spoler]страуструпа, что же еще[/spoiler], и александреску.
3.Немного освоил (буквально чуть) 11 стандарт, побаловался с лямбдами, и авто, всякие шаредпоинтеры и до этого из буста юзал.
4.Всякую банальщину по вопросам уровня "зачем нужен виртуальный деструктор" в 90% случаев ответить смогу.
5.Есть репозиторий (не на гитхабе, правда) с моими поделками, за код как для новичка не стыдно. Здесь палить не буду, ибо диванон-легивон.

Теперь вопрос: этого багажа достаточно, чтобы околачивать HR-ов по объявам на джуниоров? Или я где-то проебался? Заранее спасибо, ананасы.
>>795721
#431 #795623
>>795386
Твой код выдает какую-то хуету, маня.
>>795686
#432 #795686
>>795623

>Твой код выдает какую-то хуету, маня.


Он не реверсит порядок бит?
#433 #795721
>>795618
Типичный тупой быдлостудент рашковуза.

собирал электронные схемы по книге Кибернетика из говна и палок в 10 лет, в 13 лет читал ксакеп, изучал SQL, брутил аськи и решал задачи из K&R

Алсо,

>чистый си


>байтоебство


смех_2_сезон.mkv
>>795735>>795783
#434 #795735
>>795721

> Типичный тупой быдлостудент рашковуза.


Как будто на крестах пишет кто-то еще.
>>795783
20 Кб, 320x320
#435 #795780
Вожусь с пайпами, написал клиент и сервер, сервер создает пайп и ждет подключений, потом начинает общаться.
Клиент подключается к этому пайпу (по имени), и в зависимости от ответов сервера выводит то или иное. Так вот, пока я настроил сервер на ответы в 1 (дефолт).
Вся хуйня в том, что пайп проджолжает общаться с клиентом по алгоритму сервера, даже когда сервер перестал работать, даже когда я удалил экзешник, все равно клиент получает сообщения от пайпа, те же самые что я и прописал. Как это может быть?
>>795790
#436 #795783
>>795735
>>795721
Ну у тебя прям 11/10 блядь достоинства, охуеть вообще. Первые свои костыли я тоже еще в началке на делфи 6 сверстал, с гуем и шлюхами. Мне это HR-у говорить? Или что я на античате примерно в том же возрасте спамеры/реггеры/чекеры толкал? Нашел чем выебнуться блядь. И если сишечка не байтоебство, то где надо канонично байты ебать? В 86 асме? Охуеть вообще.
>>795794
28 Кб, 603x604
#437 #795790
>>795780
Даже после рестарта компа, удаленияперемещения исходников все равно клиент получает от этого пайпа те же самые данные. ЧЗНХЙ?
>>795795>>796373
#438 #795794
>>795783

> Мне это HR-у говорить?


Лучше показывай свою коммуникабельность и готовность прогибаться qw/ адекватность/. Айчарихи вон пишут, что типичный программистишка не может понять женщину и заботиться о ней, поэтому они живут с программистишками ради денег или вообще выбирают манагеров. Демонстрируй харизму, двигай тазом, показывай, что ты НАСТОЯЩИЙ МУЖЧИНА. А мы будем дальше дома сидеть.
#439 #795795
>>795790
Очевидно, проблема в клиенте.
>>795802
#440 #795802
>>795795
CallNamedPipe(L"\\\\.\\pipe\\serverpipe",
(LPVOID)bufferIn, 4,
(LPVOID)bufferOut, 1, pBytesRead, 20000);
И таких строчек около 4х, причем после КАЖДОГО вызова в баффер пишется 1.
Это же синхронная фунция, значит, пайп которого вообще не должно существовать получает по 1 байту каждый вызов, где в клиенте может быть проблема?
#441 #795937
посоветуйте удобную IDE под линукс
>>795939>>795987
#442 #795939
>>795937
CodeLite
>>795958>>795987
#443 #795958
>>795939
я ньюфаг, не подскажешь что лучше использовать, gcc or msvc
>>795964
#444 #795964
>>795958
Сам-то как думаешь?
>>795965
#445 #795965
>>795966
#446 #795966
>>795965
Ты сорвал джек-пот.
>>795968
17 Кб, 327x324
#447 #795968
sage #448 #795987
>>795937
Не слушай этого пидора с codelite: >>795939
Это наш местный фанатик, навязывающий свою веру ньюфаням. Для вката используй что-то, что работает из коробки: qtcreator или clion.
В качестве компилятора советую использовать clang, а не gcc. В clang сообщения об ошибках более понятные.
>>795993>>796110
#449 #795993
>>795987
ок попробую, спасибо)
#450 #796103
>>795604
Ну очевидно же. Разыменование делается обычно на порядок чаще, чем какие-то изменения, требующие доступа к управляющей структуре. Предположим, мы делаем только один указатель на объект. Если он будет только в управляющей структуре, то доступ замедляется сразу в джва раза из-за косвенности, а хотелось бы, чтобы скорость была как для грязных указателей. Если же оставить указатель на объект только в самом shared, то из управляющей структуры не будет видно, что там за объект, это дополнительно усложнит процесс удаления (придется вместе с запросом на декремент счетчика предлагать управляющей структуре в большинстве случаев не нужный указатель на объект, или делать коллбэки, или еще хуй пойми что). Вот и было принято довольно логичное решение пожертвовать несколькими байтами, тем более, что без оверхеда по памяти тут все равно не обойтись, пусть хоть по скорости будет как грязный. Такие дела.
>>796194>>796196
24 Кб, 300x291
#451 #796110
>>795987

>qtcreator


>работает из коробки

>>796126>>796151
#452 #796126
>>796110
Как там в 2012?
#453 #796151
>>796110
Ну он-то не идет ни в какое сравнение с codelite по стабильности работы из коробки. codelite вообще не работает из коробки, лол.
#454 #796194
>>796103

>Ну очевидно же.


Самый очевидный ответ.
Он же — неверный.
>>796301
#455 #796196
>>796103

>Если же оставить указатель на объект только в самом shared, то из управляющей структуры не будет видно, что там за объект


Доступ к управляющей структуре идёт через share_ptr, так что никаких проблем с получением указателя на объект нет.
>>796304
#456 #796301
>>796194
Без пруфов ты хуй простой, няша. Кококок виртуальность? Это уже вторично, в случае малейшего выигрыша по производительности могли бы сделать мономорфный shared с прямыми специализациями для дефолтных делетеров, всем поебать на архитектурку при реализации быстрых библиотек.
#457 #796304
>>796196
Решение об удалении-то ref_count_base принимает, из нее нужно видеть.
#458 #796373
>>795790
Выброси комп из окна, тогда все норм будет
#459 #796393
Закиньте пасту про александреску, хочется вспомнить
>>796420
#460 #796420
>>796393
Жил-был АНДРЕЙ АЛЕКСАНДРЕСКУ. У АНДРЕЯ всё всегда было через ЖОПУ. Мать АНДРЕЯ была наркоманкой. Список ее психических расстройств, венерических заболеваний и наркотиков, на которых она сидела, был длиннее типичного ресторанного меню. Когда пришло время рожать, каково-же было удивление врачей, когда АНДРЕЙ вылез из ЖОПЫ и каким-то образом умудрился убить и частично съесть двух медсестер. АНДРЕЙ был трудным ребенком. Когда АНДРЕЙ еще находился на лечении, на пятнадцатом году шоковой терапии и после второй лоботомии, он вдруг направил свое внимание на языки программирования. Большую часть дня, АНДРЕЙ бился головой о стену, пытался откусить кусок своего тела и ел свои экскременты. Но в перерывах между приступами, АНДРЕЙ листал книги и искал... Он прочитал про десятки языков программирования, но они не вызывали у него никакого интереса, потому что, они не были достаточно извращенными для его тонкого вкуса. Внезапно АНДРЕЙ увидел ВЫЧИСЛЕНИЕ ЧИСЕЛ ФИБОНАЧЧИ ВО ВРЕМЯ КОМПИЛЯЦИИ НА C++ и замер. В его уставшей, больной голове что-то щелкнуло - он нашел, что искал. Он начал читать книги по C++. Чем дальше он проникал в тайны C++, тем больше он понимал, что этот язык создан для него. Мерзкие извращения, которые он наблюдал на страницах, глубоко резонировали с его истерзанной и едко ненавидящей все светлое душой. Его глаза наливались кровью от удовольствия и слезы текли по щекам, от осознания, что на свете есть люди, не намного менее больные, чем он. АНДРЕЙ понимал, что скоро ему сделают третью лоботомию и тогда он вряд ли сможет написать книгу. Времени до третьей лоботомии оставалось немного и АНДРЕЙ решил начать писать книгу прямо сейчас. "THE TIME IS NOW, ANDREI", сказал он вслух самому себе на ломаном английском с выблядски кривым акцентом и начал писать. Вначале он не знал, в чем суть того, что он пишет. Но со временем картина стала ясной как день. АНДРЕЙ взял самый гнилой, уродский и омерзительный язык программирования и решил довести его до уровня сумасшествия, до сих пор невиданного в мире людей. Первый (и последний) технический рецензент его книги, сошел с ума и убил всю свою семью, после прочтения нескольких глав. Узнав об этом АНДРЕЙ смеялся, пока не потерял сознание. АНДРЕЙ понимал, что все идет как надо. Сразу после того, как он дописал последнюю главу, ему сделали последнюю лоботомию и писать книги ему больше не хотелось. Представители издателя взяли книгу АНДРЕЯ и, согласившись ее издать, спросили у него, как бы он хотел ее назвать. На ломаном, кривом английском он ответил: "MODERN C++ DESIGN: GENERIC PROGRAMMING AND DESIGN PATTERNS APPLIED BY ANDREI ALEXANDRESCU". Его акцент был настолько уебищен, что представители издателя начали ржать, с такой силой, что моча начала струиться по их ногам. Но, слишком поздно они поняли, что это была моча АНДРЕЯ. Они не знали, что таким образом он помечает своих жертв, перед тем, как их убить. АНДРЕЙ успел убить одного, но другому удалось спастись, хоть он и лишился уха.

Через несколько лет АНДРЕЯ выпустили. 20 лет шоковой терапии и 3 лоботомии, все-таки, смогли немного успокоить его. Он, конечно продолжал убивать, но редко, и в основном мелких грызунов.

Наступил обычный, скучный день. Скучным он мог быть для кого угодно, но не для АНДРЕЯ. Ведь у него диагностировали шизофрению еще на внутриутробной стадии. Книга продавалась не особо хорошо. В мире оказалось не так уж много запредельно больных людей, готовых ее купить. Уже 2 месяца у АНДРЕЯ почти не было денег и он ел блюдо собственного изобретения - ТУАЛЕТНАЯ БУМАГА ПО ФЛОТСКИ. Блюдо представляло собой собачий корм с вареной туалетной бумагой. Роялти с продаж книги капали ему на банковский счет, но очень вяло. АНДРЕЙ уже отошел от третьей лоботомии и решил взять дело в свои руки. Он положил в сумку с десяток экземпляров MODERN C++ DESIGN и пошел на улицу, с надеждой продать хотя бы несколько. Хотя бы один. Если это удастся, то наконец можно будет купить КЕТЧУП. Подумав о КЕТЧУПЕ, АНДРЕЙ улыбнулся, но повернувшись, чтобы открыть дверь, увидел свое отражение в зеркале. Выражение лица, которое получилось из за улыбки, было настолько ужасающим, что АНДРЕЙ отшатнулся. Он вышел на улицу и стал бродить по улицам. АНДРЕЙ увидел здание, в котором было множество компаний по разработке программ и направился к нему. Там АНДРЕЯ уже знали и вызвали охрану раньше, чем он успел войти. АНДРЕЙ удивился, потому что он никогда не был здесь. Из здания вышел человек и сказал АНДРЕЮ, чтобы он убирался. Человек объяснил, что однажды, один из программистов, работавших в здании, купил себе MODERN C++ DESIGN и принес на работу. Прочитав 5 страниц, этот человек обезумел и успел убить трех коллег, до того как натолкал себе в жопу скрепок и повесился в полностью пустом помещении. После этого, запятнанную кровью книгу, подобрал другой разработчик и цепь событий повторилась. Как вирус, книга распространялась по всему зданию. В результате этой бойни, 30 человек погибли ужасными смертями, перед тем, как кто-то сообразил, что нужно уничтожить книгу. АНДРЕЙ понял, почему его не хотят пускать, но решил попытать судьбу и все-же проникнуть в здание. С раззадоренным еблом, он попытался пробежать в дверь, но охранник ударил его дубиной по еблу, выбив несколько зубов, после чего добил по яйцам, пнув достаточно много раз, чтобы наблюдающие сбились со счета. АНДРЕЙ сполз с крыльца и потерял сознание.

Очнулся он уже под вечер. Первый опыт продажи был не очень удачен, но может во второй раз повезет? АНДРЕЙ шел по улице, страстно разговаривая сам с собой и вдруг увидел двух человек. Подсознательно он узнал их, но не мог вспомнить. Трясясь от страха он подошел к ним и предложил купить книгу. ПОЛ ГРЭМ и ПИТЕР НОРВИГ взяли его книгу и стали листать. Они поняли, с кем они имеют дело. АНДРЕЙ смотрел куда-то в сторону и незаметил первого удара, который пришелся по голове. АНДРЕЙ даже в начале не понял, что происходит, потому что били его как никогда сильно. Удары сыпались со всех сторон и, услышав хруст своих ребер, АНДРЕЙ осознал, что вероятно, живым ему не уйти. Это осознание ввергло его в истерику, но он ничего не мог поделать, кроме того, как обосраться и изваляться в собственном говне. Увидев это ПОЛ ГРЭМ и ПИТЕР НОРВИГ побрезговали добивать жалкого РУМЫНСКОГО барана и оставили его в покое. Грязно выругавшись, АНДРЕЙ поднялся и пошел по улице. Завернув за угол, он увидел СТРАУСТРУПА, стоящего на одном месте и напряженно о чем-то думающего. АНДРЕЙ осмотрелся, но не обнаружив потенциальных покупателей, развернулся и пошел домой, насвистывая РУМЫНСКУЮ НАРОДНУЮ ПЕСНЮ.
#460 #796420
>>796393
Жил-был АНДРЕЙ АЛЕКСАНДРЕСКУ. У АНДРЕЯ всё всегда было через ЖОПУ. Мать АНДРЕЯ была наркоманкой. Список ее психических расстройств, венерических заболеваний и наркотиков, на которых она сидела, был длиннее типичного ресторанного меню. Когда пришло время рожать, каково-же было удивление врачей, когда АНДРЕЙ вылез из ЖОПЫ и каким-то образом умудрился убить и частично съесть двух медсестер. АНДРЕЙ был трудным ребенком. Когда АНДРЕЙ еще находился на лечении, на пятнадцатом году шоковой терапии и после второй лоботомии, он вдруг направил свое внимание на языки программирования. Большую часть дня, АНДРЕЙ бился головой о стену, пытался откусить кусок своего тела и ел свои экскременты. Но в перерывах между приступами, АНДРЕЙ листал книги и искал... Он прочитал про десятки языков программирования, но они не вызывали у него никакого интереса, потому что, они не были достаточно извращенными для его тонкого вкуса. Внезапно АНДРЕЙ увидел ВЫЧИСЛЕНИЕ ЧИСЕЛ ФИБОНАЧЧИ ВО ВРЕМЯ КОМПИЛЯЦИИ НА C++ и замер. В его уставшей, больной голове что-то щелкнуло - он нашел, что искал. Он начал читать книги по C++. Чем дальше он проникал в тайны C++, тем больше он понимал, что этот язык создан для него. Мерзкие извращения, которые он наблюдал на страницах, глубоко резонировали с его истерзанной и едко ненавидящей все светлое душой. Его глаза наливались кровью от удовольствия и слезы текли по щекам, от осознания, что на свете есть люди, не намного менее больные, чем он. АНДРЕЙ понимал, что скоро ему сделают третью лоботомию и тогда он вряд ли сможет написать книгу. Времени до третьей лоботомии оставалось немного и АНДРЕЙ решил начать писать книгу прямо сейчас. "THE TIME IS NOW, ANDREI", сказал он вслух самому себе на ломаном английском с выблядски кривым акцентом и начал писать. Вначале он не знал, в чем суть того, что он пишет. Но со временем картина стала ясной как день. АНДРЕЙ взял самый гнилой, уродский и омерзительный язык программирования и решил довести его до уровня сумасшествия, до сих пор невиданного в мире людей. Первый (и последний) технический рецензент его книги, сошел с ума и убил всю свою семью, после прочтения нескольких глав. Узнав об этом АНДРЕЙ смеялся, пока не потерял сознание. АНДРЕЙ понимал, что все идет как надо. Сразу после того, как он дописал последнюю главу, ему сделали последнюю лоботомию и писать книги ему больше не хотелось. Представители издателя взяли книгу АНДРЕЯ и, согласившись ее издать, спросили у него, как бы он хотел ее назвать. На ломаном, кривом английском он ответил: "MODERN C++ DESIGN: GENERIC PROGRAMMING AND DESIGN PATTERNS APPLIED BY ANDREI ALEXANDRESCU". Его акцент был настолько уебищен, что представители издателя начали ржать, с такой силой, что моча начала струиться по их ногам. Но, слишком поздно они поняли, что это была моча АНДРЕЯ. Они не знали, что таким образом он помечает своих жертв, перед тем, как их убить. АНДРЕЙ успел убить одного, но другому удалось спастись, хоть он и лишился уха.

Через несколько лет АНДРЕЯ выпустили. 20 лет шоковой терапии и 3 лоботомии, все-таки, смогли немного успокоить его. Он, конечно продолжал убивать, но редко, и в основном мелких грызунов.

Наступил обычный, скучный день. Скучным он мог быть для кого угодно, но не для АНДРЕЯ. Ведь у него диагностировали шизофрению еще на внутриутробной стадии. Книга продавалась не особо хорошо. В мире оказалось не так уж много запредельно больных людей, готовых ее купить. Уже 2 месяца у АНДРЕЯ почти не было денег и он ел блюдо собственного изобретения - ТУАЛЕТНАЯ БУМАГА ПО ФЛОТСКИ. Блюдо представляло собой собачий корм с вареной туалетной бумагой. Роялти с продаж книги капали ему на банковский счет, но очень вяло. АНДРЕЙ уже отошел от третьей лоботомии и решил взять дело в свои руки. Он положил в сумку с десяток экземпляров MODERN C++ DESIGN и пошел на улицу, с надеждой продать хотя бы несколько. Хотя бы один. Если это удастся, то наконец можно будет купить КЕТЧУП. Подумав о КЕТЧУПЕ, АНДРЕЙ улыбнулся, но повернувшись, чтобы открыть дверь, увидел свое отражение в зеркале. Выражение лица, которое получилось из за улыбки, было настолько ужасающим, что АНДРЕЙ отшатнулся. Он вышел на улицу и стал бродить по улицам. АНДРЕЙ увидел здание, в котором было множество компаний по разработке программ и направился к нему. Там АНДРЕЯ уже знали и вызвали охрану раньше, чем он успел войти. АНДРЕЙ удивился, потому что он никогда не был здесь. Из здания вышел человек и сказал АНДРЕЮ, чтобы он убирался. Человек объяснил, что однажды, один из программистов, работавших в здании, купил себе MODERN C++ DESIGN и принес на работу. Прочитав 5 страниц, этот человек обезумел и успел убить трех коллег, до того как натолкал себе в жопу скрепок и повесился в полностью пустом помещении. После этого, запятнанную кровью книгу, подобрал другой разработчик и цепь событий повторилась. Как вирус, книга распространялась по всему зданию. В результате этой бойни, 30 человек погибли ужасными смертями, перед тем, как кто-то сообразил, что нужно уничтожить книгу. АНДРЕЙ понял, почему его не хотят пускать, но решил попытать судьбу и все-же проникнуть в здание. С раззадоренным еблом, он попытался пробежать в дверь, но охранник ударил его дубиной по еблу, выбив несколько зубов, после чего добил по яйцам, пнув достаточно много раз, чтобы наблюдающие сбились со счета. АНДРЕЙ сполз с крыльца и потерял сознание.

Очнулся он уже под вечер. Первый опыт продажи был не очень удачен, но может во второй раз повезет? АНДРЕЙ шел по улице, страстно разговаривая сам с собой и вдруг увидел двух человек. Подсознательно он узнал их, но не мог вспомнить. Трясясь от страха он подошел к ним и предложил купить книгу. ПОЛ ГРЭМ и ПИТЕР НОРВИГ взяли его книгу и стали листать. Они поняли, с кем они имеют дело. АНДРЕЙ смотрел куда-то в сторону и незаметил первого удара, который пришелся по голове. АНДРЕЙ даже в начале не понял, что происходит, потому что били его как никогда сильно. Удары сыпались со всех сторон и, услышав хруст своих ребер, АНДРЕЙ осознал, что вероятно, живым ему не уйти. Это осознание ввергло его в истерику, но он ничего не мог поделать, кроме того, как обосраться и изваляться в собственном говне. Увидев это ПОЛ ГРЭМ и ПИТЕР НОРВИГ побрезговали добивать жалкого РУМЫНСКОГО барана и оставили его в покое. Грязно выругавшись, АНДРЕЙ поднялся и пошел по улице. Завернув за угол, он увидел СТРАУСТРУПА, стоящего на одном месте и напряженно о чем-то думающего. АНДРЕЙ осмотрелся, но не обнаружив потенциальных покупателей, развернулся и пошел домой, насвистывая РУМЫНСКУЮ НАРОДНУЮ ПЕСНЮ.
>>796423
#461 #796423
>>796420
Алсо, про Степанова:
http://steps3d.narod.ru/tutorials/c-minus-minus.html

> Не так давно я узнал, когда именно г-ну Степанову пришла идея библиотеки STL - когда он находился в отделении интенсивной терапии (после отравления рыбой) в, как он сам написал, "delirium state", по-просту - в состоянии БРЕДА.


> Этот малеьнкий фактик очень удачно вписался в мои собственные представления об STL и самом языка С++.

>>796424>>796425
39 Кб, 376x440
#462 #796424
>>796423

> Даже по сравнению с Java С++ явно в проигрыше - нет интерфейсов (зато есть множественное наследование со всеми его проблемами), объектная модель просто отсутствует.



классика
>>796431
#463 #796425
>>796423

> как он сам написал, "delirium state", по-просту - в состоянии БРЕДА



словно что-то плохое
430 Кб, 920x920
#464 #796431
>>796424
Только вот как понимать ОО - я не думаю, что программисты, пишущие на Smalltalk'е, сочтут С++ объектно- ориентированным языком. Даже по сравнению с Java С++ явно в проигрыше - нет интерфейсов (зато есть множественное наследование со всеми его проблемами), объектная модель просто отсутствует.

Понятие метаинформации (а также reflection, introspection и т.п.) в С++ отсутствует полностью (а вся среда Smalltalk построена на ней).

Много ли Вы знаете простых и удобных persistence-библиотек для С++, которые бы сами могли сериализовать произвольные объекты ? Максимум, что есть, это сложные библиотек с кучей ограничений и необходимостью вручную (зачастую при помощи макросов) задавать фактически часть метаинформации.

А вот в Smalltalk'е или в Python'е таких библиотек полно.

А как дела у С++ с интеграцией со скриптовыми языками - Perl, Python, Tcl, Ruby и др ? Опять же очень плохо - надо ручками задавать всю необходимую метаинформацию. Есть правда генераторы интерфейсов, которые разбирают Ваш исходный код на С++ и по нему строят необходимые описания.

Только это не всегда работает и почему это не может делать сам компилятор.

А вот Python умеет легко работать даже с такой кривой объектной моделью как СОМ, умеет сериализовать произвольные объекты, умеет на ходу добавлять объекту новые методы.
#465 #796433
ООП хорошо подходило для сочетания двух условий - "у нас есть задачи дискретно-событийного моделирования" и "у нас есть Algol60 и больше нихуя". К Алголу60 оказалось очень легко прикрутить несколько полезных (для той задачи) хаков, которые (на тех компьютерах) еще и были дешевы в смысле скорости. Сначала они хотели сделать препроцессор (что логично - Страуструп через много лет тоже начал с этого и собирался этим и ограничиться), но им понадобились и некоторые другие расширения Алгола и ограничиться препроцессором не удалось.

И все эти "Концепции ООП" появлялись именно таким способом: вот интересный (и дешевый в реализации) эффект — как мы можем его использовать? Началось все с того, что понадобилось придумать новый (быстрый) способ передачи параметров в процедуры. Стандартные алголовские способы: по значению и по имени были медленными по разным причинам. Тогда Хоар изобрел ссылки и null. Раз уж структурная эквивалентность оказалось сложной в реализации, сравнивать стали адреса, по которым "объекты" располагаются — появилось identity. Обратили внимание на то, что блок памяти B, структурированный в начале так же, как и блок A можно обрабатывать процедурами, написанными для работы с A — появился "префиксинг" (даже синтаксически объявление класса родителя было префиксным), под который потом подвели идеологию и назвали "наследованием" (ну и понятно, почему сначала никаких "множественных наследований" не было — что такое "множественный префиксинг"?). К рекордам добавили процедуры, диспетчеризующиеся по одному аргументу. Почему именно по одному? Потому что по n > 1 — сложно в реализации.

Прекрасно решили свои задачи дискретно-событийного моделирования, на тех компьютерах что у них были, и успокоились. Но пришел Алан Кей и все испортил. Кей и прочие смолтокеры захотели сделать не такой вот "натянутый" на структурное программирование ООП, а идеологически чистый и непротиворечивый. Для этого они подвели базу под все эти технические срезания углов. Получилась чистая реализация идей, придуманных для быстроты и простоты реализации, только медленная и сложная. Они не смогли все это заставить вертеться с приемлемой скоростью до 90-х годов, когда стало уже поздно. Чтоб ввести Симула-лайк ООП в мейнстрим понадобилось только (временно) отказаться от сборщика мусора. Однако, вся философия и методология ООП, паттерны и юнит-тесты и т.д., придуманные смолтокерами не пропали, а были адаптированы мейнстримом.

Смолток — это не "изначальное древнее ООП", а возрождение умирающего старого и реформация неправильного ООП, загнувшееся, правда, раньше нем неправильное, пока по настоящему древнее ООП все продолжало умирать. Ну и, понятно, философия ООП, которая превратила все картины, загораживающие дырки на обоях, в "краеугольные камни" концепции и "имманентные особенности человеческого мЫшленья".
#465 #796433
ООП хорошо подходило для сочетания двух условий - "у нас есть задачи дискретно-событийного моделирования" и "у нас есть Algol60 и больше нихуя". К Алголу60 оказалось очень легко прикрутить несколько полезных (для той задачи) хаков, которые (на тех компьютерах) еще и были дешевы в смысле скорости. Сначала они хотели сделать препроцессор (что логично - Страуструп через много лет тоже начал с этого и собирался этим и ограничиться), но им понадобились и некоторые другие расширения Алгола и ограничиться препроцессором не удалось.

И все эти "Концепции ООП" появлялись именно таким способом: вот интересный (и дешевый в реализации) эффект — как мы можем его использовать? Началось все с того, что понадобилось придумать новый (быстрый) способ передачи параметров в процедуры. Стандартные алголовские способы: по значению и по имени были медленными по разным причинам. Тогда Хоар изобрел ссылки и null. Раз уж структурная эквивалентность оказалось сложной в реализации, сравнивать стали адреса, по которым "объекты" располагаются — появилось identity. Обратили внимание на то, что блок памяти B, структурированный в начале так же, как и блок A можно обрабатывать процедурами, написанными для работы с A — появился "префиксинг" (даже синтаксически объявление класса родителя было префиксным), под который потом подвели идеологию и назвали "наследованием" (ну и понятно, почему сначала никаких "множественных наследований" не было — что такое "множественный префиксинг"?). К рекордам добавили процедуры, диспетчеризующиеся по одному аргументу. Почему именно по одному? Потому что по n > 1 — сложно в реализации.

Прекрасно решили свои задачи дискретно-событийного моделирования, на тех компьютерах что у них были, и успокоились. Но пришел Алан Кей и все испортил. Кей и прочие смолтокеры захотели сделать не такой вот "натянутый" на структурное программирование ООП, а идеологически чистый и непротиворечивый. Для этого они подвели базу под все эти технические срезания углов. Получилась чистая реализация идей, придуманных для быстроты и простоты реализации, только медленная и сложная. Они не смогли все это заставить вертеться с приемлемой скоростью до 90-х годов, когда стало уже поздно. Чтоб ввести Симула-лайк ООП в мейнстрим понадобилось только (временно) отказаться от сборщика мусора. Однако, вся философия и методология ООП, паттерны и юнит-тесты и т.д., придуманные смолтокерами не пропали, а были адаптированы мейнстримом.

Смолток — это не "изначальное древнее ООП", а возрождение умирающего старого и реформация неправильного ООП, загнувшееся, правда, раньше нем неправильное, пока по настоящему древнее ООП все продолжало умирать. Ну и, понятно, философия ООП, которая превратила все картины, загораживающие дырки на обоях, в "краеугольные камни" концепции и "имманентные особенности человеческого мЫшленья".
>>796436
#466 #796436
>>796433
Все это конечно очень интересно, но таки где ORM на крестах? Вот на Java есть Hibernate, на C# - тот же Hibernate и Entity Framework, на скриптовых языках свои ORM... А на крестах что у нас?

Или там сериализация/десериализация XML и JSON, как это можно сделать?
>>796443
#467 #796443
>>796436
НИЧЕГО
#468 #796515
>>795604
Указатель в control structure нужен для weak_ptr. В shared дублируется, чтобы в control structure лишний раз не лазить. Там два атомика же, если из другого потока будут копию делать/уничтожать пойдёт синхронизация кешей процессора скорее всего, а это долго.
>>796516>>796560
#469 #796516
>>796515
Плюс control structure хуй знает где лежит ещё, может страницу памяти подключать придётся, а может она в свопе уже. А указатель в shared - вот он, тут, либо на стеке, либо и нак на активной странице памяти.
#470 #796560
>>796515

>Указатель в control structure нужен для weak_ptr.


weak_ptr создаётся от shared_ptr и может достать указатель из него же и сохранить так же, в себе, и не лазать в control structure.

Соображения производительности, конечно, играют рояль, но только там, где один поинтер лежит в самом shared/weak ptr. Могли бы лежать два поинтера в control structure. Но их всё равно нужно было два. Иначе не получится зделать shared_ptr, удовлетворяющий стандарту.

Вот я и спрашиваю, зачем ДВА поинтера, неважно, где они лежат.

Дело не в производительности.

Неужели тут нет экспертов?
#471 #796648
Может кто-нибудь пояснить за c++ builder ?
Предлагают в одной говно-конторке работать на нем за еду
>>797011
#472 #796674
Посоны, поясните насчёт лицензий. Я взял файл с примером из одного SDK. Лицензия на этот пример мне неизвестна. Есть строка: Копирайт 201x год, Корпорация Икс.

Постепенно переписывал, переписывал и в результате там от исходного вида не осталось ничего общего, кроме #include'ов. Могу ли я такой файл выложить в сеть под свободной лицензией? Можно ли мне его выкладывать вместе с историей правок или сделать так, как-будто это первый коммит?
>>796677>>797013
#473 #796677
>>796674
Во-первых, если нельзя будет понять, что твой код основан на коде либы, то похуй. Если можно, то нужно знать исходную лицензию. Если она не указана, то ЕМНИП она - creative common.
#474 #796689
Сап.Есть скрипт,скипающий всяких м/ж и т.п. в чат вдвоем.Решил я написать прогу,которая будет добавлять список слов в условия скрипта,получилось так,что нуль терминаторы мешаются.Например, " input ",вместо "input".Как это фиксить?
http://pastebin.com/agcYEiij
#475 #796696
>>796560
Нет, все дело в производительности. Вот тебе выступление разработчика STL в MSVC:
https://channel9.msdn.com/Events/GoingNative/GoingNative-2012/STL11-Magic-Secrets
Начинается с 10:30
>>797012
#476 #796719
>>796560
Реализация, где было бы рядом два одинаковых поинтера - это нонсенс и идиотизм. Если есть два абсолютно одинаковых однотипных поинтера, лежащие рядом, то нет никаких причин, мешающих объединить их в один. Чисто теоретически можно было бы допустить какие-то хитрые изъебства, связанные с кэшированием и подобной хуйней, но это именно что вопрос производительности, не имеющий никакого отношения к стандарту. А ты втираешь какую-то дичь нам и прикрываешься кукареками про икспертов. Эксперт это, блядь, не тот, кто высосал из пальца дрочильню и объявил ее сакральным знанием на основании того, что подобный бред просто не придет в голову никому.
#477 #796764
>>796560

>weak_ptr создаётся от shared_ptr и может достать указатель из него же и сохранить так же, в себе


Не может. Суть weak_ptr в том, что он кроме разрыва циклических ссылок еще и предохраняет от dangling pointers. То есть объект, на который ссылались shared_ptr может быть уже убит, но control structure живет до тех пор, пока на нее указывает хоть один weak_ptr. Когда же weak_ptr пытается получить ссылку на убитый объект, он получает нулевой указатель, вместо указателя на порченную память.
#478 #797001
>>796560

>weak_ptr создаётся от shared_ptr и может достать указатель из него же и сохранить так же


При создании да. А вот при уничтожении или создании shared из weak нет, нужен указатель, а у weak есть полько поинтер на структуру.
>>797012
#479 #797008
>>796560
В производительности дело же.
Указатель в структуре по идее лишний, т.к. там атомики впритык, значит туда лазить может быть медленно. Но он нужен, чтобы из weak shared делать. Не было бы weak указателей - было бы по одному указателю в shared и всё.
>>797012>>797086
#480 #797011
>>796648

>Может кто-нибудь пояснить за c++ builder ?


>Предлагают в одной говно-конторке работать на нем за еду



На Турбо Паскале за еду не предлагают кодить? О чём вопрос то? За builder, имхо, доплачивать должны, меньше чем за 120к в Россиюшке я бы его даже трогать не стал.
#481 #797012
>>796696
>>796719
>>796764
>>797001
>>797008

"иксперты" застряли в своём манямирке и всё пытаются убедить меня (точнее, себя) что дело только в производительности.

Ладно, вот вам ответ: shared_ptr может указывать на один объект, а управлять временем жизни другого. Поинтер, которым он управляет, лежит в структуре, а который он возвращает по get() или к которому обращается из оператора -> — в самом shared_ptr-е.

Зачем это нужно? Обычно приводят пример, что shared_ptr может хранить указатель на метод объекта, которым управляет. Или можно хранить указатель, полученный кастом управляемого объекта. Ведь поинтер после каста может отличаться, а освобождать объект по поинтеру, по которому ничего не выделялось нельзя.

Короче, см. (8)-й — aliasing — конструктор тут http://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr
#482 #797013
>>796674
Перетасуй инклюды, делай одним коммитом и со спокойной совестью считай, что всё написал сам.
#483 #797018
>>797012
Блядь, да вы заебали.
Потрать 2 часа времени и напиши свой shared без weak поинтеров. У тебя поинтеры будут в shared, а в структуре один счётчик. И на касты похуй же, какая тебе в попу разница к чему кастили, виртуальный деструктор должен быть же.
Я в своём манямирке наебался во всеми умными указателями из буста, Qt и std на отлично, не надо тут всех дебилами мнить. Если не до конца понятно что-то - вопрос задай.
Ещё раз, 8 алиасинг ничего не меняет. Ну скастил ты, ну один shared теперь с указателем на базовый. Что поменялось то? Удалит он также хорошо, структура у него такая-же. Да типы указателей в самом shared и структуре разные будут. И чё? Уже сказали тебе, что shared указатель для структуры не пользует, он для weak нужен.
>>797020
#484 #797020
>>797018

> И на касты похуй же, какая тебе в попу разница к чему кастили, виртуальный деструктор должен быть же.


Ок, а с указателями на члены класса как ты предложишь поступать?
>>797028
#485 #797028
>>797020
Шо? Можешь развернуть свою мысль? На какие такие члены класса? При разыменовании то? Так и хули будут тебе батины члены. В смысле члены базового класса.
239 Кб, 1959x1959
39 Кб, 612x242
105 Кб, 1012x446
#486 #797039
>>797012
Теперь осталось только объяснить, зачем weak_ptr хранит два указателя, гений ты наш на самом деле нет.

Я тебе скинул выступление, МАТЬ ЕГО, РАЗРАБОТЧИКА STL В MICROSOFT, где он говорит, что в первую очередь там два указателя из-за "zero-overhead access", а тебя такое-то ВРЕТИ.
>>797046>>797047
#487 #797046
>>797039

>Теперь осталось только объяснить, зачем weak_ptr хранит два указателя


А ты настолько туп, что не можешь догадаться даже после моего объяснения? Затем же, зачем и shared_ptr: для aliasing-a.

>>797039

> выступление, МАТЬ ЕГО, РАЗРАБОТЧИКА STL В MICROSOFT


> авторитет для меня всё, шевелить мозгами — ничто


Ясно. Я и не спорю, что указатель, к которому shared_ptr обращается, хранится в нём ради производительности. Я говорю: даже если бы вопрос производительности не стоял, если бы aliasing pointer хранился в control structure, указателей там ВСЁ РАВНО БЫЛО БЫ ДВА, БЛЯДЬ. Один — на управляемый объект, который будет уничтожен при обнулении ссылок на него, а второй — который shared/weak_ptr возвращает из operator->()
>>797049
#488 #797047
>>797039
Хуя. А реально, зачем? Я не готов час этого чувака слушать.
При создании shared один хуй в структуру лезть, а больше ни для чего указатель и не нужен же.
#489 #797049
>>797046

>Один — на управляемый объект, который будет уничтожен при обнулении ссылок на него, а второй — который shared/weak_ptr возвращает из operator->()


Зойчем? Почему один и тот же не пользовать?
>>797051
#490 #797051
>>797049
Я же всё объяснил тут >>797012
#491 #797055
>>797012

>Обычно приводят пример, что shared_ptr может хранить указатель на метод объекта, которым управляет.


ШТОА????!!!!

>Или можно хранить указатель, полученный кастом управляемого объекта.


И похуй, delete и после каста отработает. А если ты его к жопе привёл - ССЗБ.
>>797057>>797086
#492 #797057
>>797063
#493 #797063
>>797057
Ебать мой хуй. Больные ублюдки!
А на меня бочки катили, что я FILE в них пихал с каспомным делитером. Омичи ебучие.
>>797064>>797086
#494 #797064
>>797063

>А на меня бочки катили, что я FILE в них пихал с каспомным делитером.


Тут есть горстка ебанутых фанатиков. FILE им религия запрещает использовать, макросы им религия запрещает использовать… Хуже муслимов.
Не слушай их.
>>797080
#495 #797068
>>797012

>"иксперты" застряли в своём манямирке


Ебать ты олень, я тебе то же самое рассказал >>796719. Shared_ptr хранять данные, weak_ptr хранят управляющую структуру, и обнуляются при уничтожении данных.
#496 #797069
>>797068
Перепутал ссылку >>796764.
#497 #797072
>>797068
В weak тоже поинтер на объект есть. Так что производительность - это типа сайд-эффект.
>>797074>>797087
11 Кб, 943x563
#498 #797073
>>797068

> тебе то же самое рассказал


Не увидел ни слова про aliasing.
>>796764

>Не может.


Конечно не может! Главное, на пикрелейтед не смотреть.
>>797092
#499 #797074
>>797072
Неужели до кого-то дошло.
57 Кб, 521x500
#500 #797076
>>797012
https://github.com/boostorg/smart_ptr/commit/09c14760632986e4068a059411cae9c89cb84f46

Так-так-так, что тут у нас? Ой, да это же самая первая реализация связки shared_ptr + weak_ptr! Ой, а давайте посмотрим... Вай, да тут же, оказывается, нет aliasing constructor и при этом указатель на объект хранится и в счетчике, и в shared_ptr. Неужели это ты НЕ ПРАВ?

Можешь начинать оправдываться.
>>797078>>797086
#501 #797078
>>797076
Блядь...
Это понятно, не понятно при такой логике нахуа в weak 2 указателя - на структуру и объект. По такой логике указатель на объект надо из структуры доставать только при создании shared из него.
>>797081>>797085
#502 #797080
>>797064
Религия такая вообще скорее добро и в сферическом мире розовых поней это всё верно. Но есть легаси, а там бывает 3 стула - пихнуть FILE в shared, писать свой RAII холдер (нахуа?) или руками освобождать (за что надо руки отрывать и разбивать ими лицо в кровавое месиво).
#503 #797081
>>797078
Отвечу, если прилюдно покаешься и признаешь правоту "икспердов", которые поясняли за оптимизацию.
>>797085>>797086
#504 #797085
>>797081
Про "икспердов" писал я, этот >>797078 отвечает вместо меня.
А что насчёт покаяния — хуй тебе. Я не отрицал роль производительности, я спросил, зачем для std:: (не boost::, идиот) необходимо два указателя.

В boost:: можешь хоть 500 понапихать.
#505 #797086
>>797081
Я не >>797012
Я >>797055 >>797008 >>797063
Так что я покаялся уже. Может >>797076 жопой прочитал, я подумал что это опять про оптимизацию вскукарек.
#506 #797087
>>797072

>В weak тоже поинтер на объект есть. Так что производительность - это типа сайд-эффект.


Там в любом случае два дереференса, по стандарту - сначала получаешь shared_ptr из weak_ptr, потом уже данные.
>>797090>>797096
#507 #797090
>>797087
Дык, о чём и речь. И если речть только о

>сначала получаешь shared_ptr из weak_ptr, потом уже данные


то указатель на объект в weak нах не нужен. Один хер лезем в структуру при создании shared, чтоб и указатель оттуда не взять?
А он есть, зачем он есть? Алясинг.
#508 #797092
>>797073

>Главное, на пикрелейтед не смотреть


Ты сам-то смотрел? Данные уничтожаются, когда счетчик shared_ptr обнуляется, control уничтожается, когда обнуляются weak_ptr. То есть данные могут уже быть уничтожены, но ctrl будет продолжать жить, и возвращать нулевой указатель при lock.
>>797093>>797096
#509 #797093
>>797092

> Данные уничтожаются, когда счетчик shared_ptr обнуляется, control уничтожается, когда обнуляются weak_ptr.


Очень здорово, что ты это знаешь.
Только к чему ты это написал?
>>797097
52 Кб, 600x600
#510 #797094
>>797085

>Я не отрицал роль производительности, я спросил, зачем для std:: (не boost::, идиот) необходимо два указателя


КАКИЕ МАНЕВРЫ. Маньке невдомек, что интерфейс std::shared_ptr попал в стандарт напрямую из буста и является его полной копией. И твой ссаный aliasing constructor пришел именно из буста. Конечно, aliasing constructor накладывает ограничение на реализацию shared_ptr, но не будь его, там там все равно было бы двойное хранение указателя.
Потому что изначальная мотивация была - zero overhead.
Я тебе больше скажу, aliasing constructor в таком виде появился именно из-за дублирования указателя на данные во внутренней реализации.

Начинай каяться, мы ждем.
>>797099
493 Кб, 500x250
#511 #797096
>>797092
>>797087
Речь о том, что при предложенном вами объяснении в weak должен быть только поинтер на структура, а там второй есть, на объект. Нахуа он в weak?
>>797106
#512 #797097
>>797093
Человек открывает для себя волшебный мир умных указателей. Вот, поделился своими знаниями so far.
#513 #797099
>>797094

>там там все равно было бы двойное хранение указателя


В shared - да.
В weak - нет.
Подставляй сраку!
Не >>797085 кун
>>797103
#514 #797101
>>797012
Я >>796719-кун. Признаюсь честно, я не думал про псевдонимный конструктор хотя, конечно, знаю про него, когда обдумывал твои слова, так что ты отчасти прав, и это серьезная причина. Но я все же не уверен, что это важнее производительности, тем более, раз об этом говорит парень из STL-команды. Если бы производительность не играла никакой роли, то неочевидно, что комитет пошел бы на увеличение оверхеда ради этой весьма специфической и редкой фичи. Я не помню, были ли псевдонимные конструкторы в boost::shared, но есть подозрение, что они не планировались с самого начала, а просто удачно вписались в уже существующую реализацию с двумя указателями. Но это все уже, конечно, домыслы, так что энивей спасибо тебе за содержательную дискуссию. Обожаю крестотред как раз за такие споры.
>>797104>>797105
#515 #797103
>>797099

>В weak - нет.


Да ты что, мой милый, почему же здесь так:

https://github.com/boostorg/smart_ptr/blob/09c14760632986e4068a059411cae9c89cb84f46/include/boost/weak_ptr.hpp
>>797113
#516 #797104
>>797101
Я не >>797012 кун, но тут все правы. Указатель в структуре нужен для weak, в weak нужен для алясинга, в shared нужен для алясинга и производительности. Два зайца одним камнем и всё такое. А если бы не производительность, то да, скорее всего выкинули бы алясинг КЕМ и не тратили память ради редкоиспользуемой фичи.
#517 #797105
>>797101

>Я не помню, были ли псевдонимные конструкторы в boost::shared,


Были

>но есть подозрение, что они не планировались с самого начала,


Да, в 2007: https://github.com/boostorg/smart_ptr/commit/54e12d03fdfec63b4d8ff41991c4e64af6b1b4b4

>а просто удачно вписались в уже существующую реализацию с двумя указателями


Да
#518 #797106
>>797096

>Нахуа он в weak?


Чтобы не делать лишних телодвижений, когда указатель на данные обнулится. Если он нулевой у weak_ptr, тогда можно сражу возвращать невалидный shared_ptr, не лазая в контрольную структуру.
#519 #797109
>>797106
Вот ета лал так лал. Как же указатель обнулится в weak_ptr? Святым духом, что ли?
>>797133
#520 #797111
Вообще, охуенно, что пошло такое бурное обсуждение shared_ptr. Хороший повод покурить их внимательнее, а то я поймал себя на том, что недолюбливаю их и все время норовлю построить жесткие иерархии владения на unique_ptr, а то и вообще иммутабельные. Эх, гибче надо быть.
#521 #797113
>>797103
Может потому что... может...
Не знаю даже...
Может потому что у него есть get() и разыменования, которого НЕТУ БЛЯДЬ В СТАНДАРТЕ И ЭТО ЕДИНСТВЕННАЯ ПРИЧИНА, ПОЧЕМУ ОН ТАМ?
Ой, чё-то я разорался, чтобы это понять надо же было самому глянуть на код, прежде чем ссылку кидать.
#522 #797114
>>797106
На самом деле, указатель изначально появился там копипастом из shared_ptr, а затем удобно вписался в концепцию алиасинга;
>>797133
#523 #797115
>>797085
Эй, "эксперд", чего не каешься, а? Мы про тебя не забыли.
>>797117>>797121
#524 #797117
>>797115
Покаялся тебе за щёку. Проверяй.
>>797122
#525 #797120
>>797106
Поинт коректный, если объекта нету - он не появится. Сетим указатель на объект в ноль и не лезем больше в структуру. Но почему не пользовать для этого указатель на структуру? Типа, если объекта нет, отцепляем weak от структуры (если мы последние - сносим структуру), сетим указатель в ноль и при попытке лока всегда возвращаем пустой shared. Не?
>>797133
#526 #797121
>>797115
Ты так говоришь, как будто мы спорим здесь, чтобы смешать с говном друг друга, а не обменяться опытом.
>>797123
#527 #797122
>>797117
Не доехало, плохо покаялся. Вот ведь мудак, да? Сначала жирно траллировал и поливал говном анонов, которые дело говорили, потом начал маневрировать, а потом оказалось, что он настолько ссыкло, что даже признать свою неправоту не может.
>>797124>>797126
40 Кб, 200x200
#528 #797123
>>797121
Одно другому не мешает.
#529 #797124
>>797122

>Не доехало, плохо покаялся


Ты по привычке сразу проглотил, поэтому найти не можешь.

> Сначала жирно траллировал и поливал говном анонов


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

А говну вроде тебя везде поливание говном видится. Всё, иди нахуй, долбоёб.
#530 #797126
>>797122
Няш, ну вот если я столь же пафосно расчехлю свой пак gotchas, то 99.9% анонов включая меня самого обосрется, и не по одному пункту, а я смогу злорадствовать. Но бугурт не отменит полезности, каждый узнает что-то новое для себя. Так же и здесь, тебе дали пищу для размышления - разве так важно, в какой форме?
>>797130
#531 #797130
>>797126
Расчехляй, хуле сидишь.
>>797141
34 Кб, 500x376
Проверяю местных экспертов. #532 #797132
Чем отличается указатель от ссылки?
Ссылка сетится один раз при инициализации.
В ссылку нельзя пихнуть nullptr (ну то есть технически можно, но за такое побьют).

Что ещё?
#533 #797133
>>797109
Да, затупил. Вот он >>797114 правильно говорит. Он там нужен для aliased shared_ptr.
>>797120
У shared_ptr есть конструктор, который позволяет ссылаться не на сам объект, а, напрмер, на его члены. Тогда weak_ptr будет указывать не на сам объект, а куда-то еще, но ссылки будут обнуляться у самого объекта.
>>797136
#534 #797136
>>797133

>У shared_ptr есть конструктор, который позволяет ссылаться не на сам объект, а, напрмер, на его члены.


Я в курсе, я о том, что

>Чтобы не делать лишних телодвижений, когда указатель на данные обнулится


не причина для второго указателя, т.к. для этого можно сделать как я писал.
#535 #797137
>>797132
Наверняка ещё какая-нибудь ебола с наследованием.
>>797138
#536 #797138
>>797137
Нет
#537 #797140
>>797132
Нельзя сделать ссылку на ссылку
Нельзя сделать массив ссылок
Обращение к полям через точку
>>797144
#538 #797141
>>797130
Я пока еще не отсортировал пак, хотел в следующих тредах начать вбрасывать понемногу. Скажем, вот для затравки: http://ideone.com/uTBv1S Легальный ли код по стандарту? Если нет, то почему, если да, то что происходит в нем? Если до бамплимита не разделаетесь, то перекатите ссылку в новый тред, будьте няшами, а то меня не будет завтра.
>>797201
#539 #797144
>>797140

>Нельзя сделать ссылку на ссылку


>Нельзя сделать массив ссылок


Да, но почему? Это следствие.
>>797154>>797229
#540 #797146
>>797132
Обожаю задавать этот вопрос экспертам, которые меня собеседуют. Обычно после этого от тебя отстают с виртуальными деструкторами и сортировкой пузырьком и начинается ламповая беседа про любимый язык.
#541 #797149
>>797132
Ссылка это не объект, а указатель объект. Соответственно все несколько сотен утверждений стандарта, верных только для объектов, образуют различия.
11 Кб, 250x202
#542 #797151
>>797154
#543 #797154
>>797144
А да, еще не математики для указателей, но это я уже загуглил, так что не считается.
>>797149
>>797151

> What is a reference?


> It's an alias for an object - another name by which it can be called. The implementation is frequently identical to that of pointers. But don't think of references as pointers - a reference is the object.


Нахуй идем, победители?
#544 #797159
>>797154
Артикль `a' от `the' отличаешь?
А слово `существительное' от части речи `существительное'?
(не >>797149)
>>797167
#545 #797160
>>797154

>But don't think of references as pointers - a reference is the object


Сам иди. Имеется в виду, что ссылка - это объект на который она ссылается.
Typeof ссылки вернёт тип этого объекта.
sizeof вернёт размер объекта, а не ссылки.
Попытка взять адрес ссылки вернёт адрес объекта.
>>797167
#546 #797164
>>797154
Точно лень искать, но примерно в 3.9 перечислены объектные типы, ссылок там нет.
>>797167
#547 #797167
>>797159
>>797160
>>797164
Ну раз мы любим заковыристые вопросы, так ответьте, почему нельзя взять ссылку на ссылку, если внутри это указатели.
Если это действительно указатели, то тогда должно быть все ок, но оно не ок.
Если ссылка это the объект, то ссылка на ссылку должна вернуть ссылку на объект.
Время пошло.
#548 #797169
>>797167

> если внутри это указатели


Сам выдумал или подсказал кто?
>>797180
#549 #797172
>>797167

>почему


По стандарту, маня. Разрешено делать только то, что явно разрешено в стандарте. В стандарте говорится только о ссылках на объектные типы, сами ссылки не являются объектными типами. Поэтому ссылки на ссылки неявно запрещены, как и бесконечное число других невалидных конструкций.
>>797180
#550 #797173
>>797167

>внутри это указатели


Для кодогенератора в компиляторе - да. Для программиста - нет.

>ссылка на ссылку должна вернуть ссылку на объект


int a;
int& b = a;
int& c = b;
c - ссылка на a. Если b протухнет, c останется валидным.
>>797178>>797180
#551 #797176
>>797167

>ссылка на ссылку должна вернуть ссылку на объект


Так и есть, это явно оговорено. Но возможно только при выводе аргументов шаблона или синонимов, в остальных случаях ты чисто технически не сможешь написать такое, ибо упомянутая ссылка сразу воспринимается как referenced тип.
>>797180
#552 #797178
>>797173

>c - ссылка на a. Если b протухнет, c останется валидным.


Только это не всегда так.
>>797184
#553 #797180
>>797172
Вооот, так и сразу говори - потому что по стандарту дяденьки придумали, а не потому что ссылки это the объект.

>>797169
>>797173

>>797173
То же самое можно сказать и про указатель. Просто указатель приходится разыменовывать.

>>797176
Там идет схлопывание ссылочных типов, а не вывод ссылки на ссылку.

>в остальных случаях ты чисто технически не сможешь написать такое


потому что дяденьки сказали, что так нельзя.
>>797189
#554 #797182
>>797167

>Если ссылка это the объект, то ссылка на ссылку должна вернуть ссылку на объект.


Так и есть http://ideone.com/AVxvWK
>>797188
#555 #797184
>>797178
struct A
{
int& a;
};

int main()
{
int a1 = 5;
A* aa1 = nullptr;
{

int& b = a1;
aa1 = new A{ b };
}
int d1 = aa1->a;

Работает.
>>797186
#556 #797186
>>797184

>работает


В спорах о дебрях стандарта это очень слабый аргумент, ибо прямо сейчас в каждом из компиляторов сотни непофикшенных багов. По факту ни один стандарту полностью не соответствует.
>>797193
#557 #797188
>>797182
Это хороший пример, мне нравится. Хоть не пердеж от соседнего анона.
>>797198
#558 #797189
>>797180

>Вооот, так и сразу говори - потому что по стандарту дяденьки придумали, а не потому что ссылки это the объект.


Ссылки по стандарту the object, маня, ты о чём?
Ссылка - не указатель и никоим боком с ним не связана. То что компиляторы генерят похожий код в некоторых случаех говорит тебе только о деталях имплементации компилятора, больше не о чём.
>>797196
#559 #797193
>>797186
Оно по стандарту должно работать. A.a - это ссылка на а1, к b после инициализации она не имеет никакого отношения.
#560 #797196
>>797189

>Ссылки по стандарту the object, маня, ты о чём?


Я что-то говорю против?

>То что компиляторы генерят похожий код в некоторых случаех говорит тебе только о деталях имплементации компилятора, больше не о чём.


Вот об этом я и говорю. Теоретически, ссылки это не указатели, но фактически - указатели. Поэтому запрет делать ссылки на ссылки и архивы ссылок исходит только из стандарта (т.е. потому что так придумали), а не потому что по факту так нельзя.
>>797203
#561 #797198
>>797200
#562 #797200
>>797198
И что ты хотел этим показать?
>>797208
194 Кб, 1586x1078
#563 #797201
>>797141
Детский пример.
#564 #797203
>>797196

>>Поэтому запрет делать ссылки на ссылки и архивы ссылок исходит только из стандарта (т.е. потому что так придумали), а не потому что по факту так нельзя.


Сам понял, что сказал? А из чего ещё оно может исходить? Если бы в стандарте было написано, что ссылки можно ебать, если им есть 18, то производитель компилятора должет хоть как извернуться, но поебушки обеспечить и будет ссылка не указателем, а тнёй.
От того что указатель под собой имеет просто 64 битное число ты же не думаешь о нём как о простом числе. Это абстракция, ёбана. Поведение её описано в стандарте и никого не должно ебать, как она реализована внизу. Понятно, что знать это хорошо для системного понимания и возможности делать какие-то оптимизации, но по части философии - всё как в джаве: тебе описали поведение, а как уж реализованно - не ебёт.
>>797214
#565 #797208
>>797200
Что нету ссылки на ссылку. При взятии адреса ссылки даётся адрес объекта.
Хотя адрес у неё где-то там есть, но без грязного хака его не достанешь.
Сам хак: http://ideone.com/hJtNfa
>>797212>>797214
#566 #797212
>>797208
Вот тебе хак попроще. http://ideone.com/u4Q7P9

Хотя всё это, конечно, не по стандарту...
>>797214
#567 #797214
>>797203
Цитата из стандарта:

> 5 There shall be no references to references, no arrays of references, and no pointers to references.


Вот ответ. А не потому что ссылки это не объекты.

>>797208
>>797212
Да, уже увидел, что схлопывание ссылок происходит и при синонимах.
>>797215>>797216
105 Кб, 1024x683
#568 #797215
>>797214

> 5 There shall be no references to references, no arrays of references, and no pointers to references.


>Вот ответ. А не потому что ссылки это не объекты.


Ссылки не объект, поэтому стандарт и запрещает.
>>797217
#569 #797216
>>797214

> А не потому что ссылки это не объекты.


3 Basic concepts [basic]
3 An entity is a value, object, reference, …
>>797217
#570 #797217
>>797215
>>797216
Функции это тоже не объект, однако ссылку на функцию можно создать.
>>797219
#571 #797219
>>797217
В огороде бузина, однако в Киеве дядька!
>>797222>>797224
#572 #797222
>>797219
Все с тобой ясно. Весь тред доказывает, что ссылки на ссылки нельзя создать, потому что ссылки это не объект, и тут ему показывают, что ссылку на не-объект можно таки создать по стандарту.
>>797223>>797230
#573 #797223
>>797222

> Весь тред доказывает, что ссылки на ссылки нельзя создать


o_O
это не я точно.
#574 #797224
>>797219
Вот это ты зря. С его способностью следить за нитью обсуждения он сейчас хохлосрач начнёт.
>>797229
#575 #797229
>>797224
В общем, подведем черту:
>>797144

>Да, но почему? Это следствие.


Потому что это явно не разрешено стандартом.

Создавайте новый тред, этот ушел в бамплимит.
>>797233
#576 #797230
>>797222
Блядь, потому что она похожа на объект, но не объект. Если бы ссылка по поведению была похожа на функцию, тебе бы доказывали, что адрес на неё нельзя брать, потому что это не функция. Утырок, ты чего к формулировкам докапываешься? Ты действительно не понял, что тебе сказать хотели? Или тебе просто нравиться поебываться до людей пока нахуй не пошлют или пока не начнут определениями из стандарта разговаривать?
>>797234>>797245
#577 #797233
>>797229

>Создавайте новый тред, этот ушел в бамплимит.


^Я ленивая жопа.^
Я не умею.
#578 #797234
>>797230
Это ты уже перестал понимать тот факт, что ссылки на ссылки нельзя создавать, не связан с тем фактом, что ссылка не объект или похожа на объект.
>>797236
#579 #797236
>>797234
Вот представь себе стандарт.
Дилдо не острое, можно пихать в жопу.
Нож острый, нельзя пихать в жопу.
Вопрос, почему нельзя пихать нож в жопу? Потому что стандарт или потому что острый?
Технически оба ответа правильные, но мы говорим о втором, потому что ответ ПО СТАНДАРТУ в обсуждении не нуждается, утырок.
>>797237
#580 #797237
>>797236
Тебе снова повторить ответ?
Ок:

>There shall be no references to references, no arrays of references, and no pointers to references.


Опять же, функция не является объектом, однако ссылку на функцию можно создать.
Ответ про не-объект - неправильный.
>>797238
#581 #797238
>>797237
И тут ты такой приходишь и говоришь, что язык тоже бывает острый, но его пихать в жопу можно, значит нож нельзя по стандарту, а не потому что острый.
Ты правда думаешь что это строчка из стандарта никак не связана с тем, что ссылка не объект?
>>797239
#582 #797239
>>797238
Ты упорно не хочешь замечать пример с функцией.
>>797245
#583 #797245
>>797249
#584 #797247
Где перекат то?
>>797248>>797249
28 Кб, 450x298
#585 #797248
>>797247

>перекат

>>797255
#586 #797249
>>797245
То есть твое объяснение это то, что функция как бы объект, а ссылка не объект? Прости, я не умею интерпретировать предложения, которые написаны в припадке.
Сформулируй себя нормально, и может быть я тебя пойму.

>>797247
Дай тут закончить дело, в интернете кто-то неправ, а тащить это в новый тред не хочется.
>>797254>>797255
#587 #797254
>>797249
Функции - это вообще отдельные сущности, которые ни к ссылкам, ни к объектам отношения не имеют.
Прикол с ссылкой в том, что это не объект, как многие думают. То есть изначально такой прикол с ссылкой. Она чем-то похожа на объект, но не объект. Поэтому в стандарте запретили всё что ты перечисляешь. А была бы объектом - скорее всего не запретили бы. Про функции речи не шло вообще, что ты про них вспомнил то?
>>797258
20 Кб, 640x480
#588 #797255
>>797248
>>797249
Эээ. А как ты себе "конец дела" видишь? Хочешь, подкинь тему для холивара для подстраховки после переката.
#589 #797258
>>797254
Функции я приплел к тому, что они одного порядка со ссылками - они тоже не-объекты, но энтити. Твой тезис - нельзя создать ссылки на не-объекты. Этот тезис неверен.
>>797262
#590 #797262
>>797258
У функций есть адрес.
>>797267
#591 #797264
Где перекат?
Проверяю местных экспертов #592 #797265
Кто знает, почему нету переката, БЛЖАД?
#593 #797267
>>797262
Смотри, у ссылки тоже есть:
http://ideone.com/6VGTAH
>>797273>>797275
#594 #797273
>>797267
Да ты что? Правда?
http://ideone.com/ULSI5n
Иногда он есть, как в http://ideone.com/hJtNfa
А иногда и нету, если компилятор знает адрес объекта на этапе компиляции (какая-нибудь локальная переменная на стеке) то может и не быть, да.
>>797278
#595 #797275
>>797267
Как раз в твоём примере у ссылки нету адреса. Нету вообще, нигде. Компилятор выкинул нах b и просто работает с a.
>>797278
#596 #797278
>>797275
>>797273
Ладно, неправильно выразился, от ссылки тоже можно взять адрес, который будет совпадать с адресом объекта. То есть операция взятия адреса тут тоже не связана с тем, что ссылку на ссылку нельзя создать.
>>797284
#597 #797284
>>797278

>То есть операция взятия адреса тут тоже не связана с тем, что ссылку на ссылку нельзя создать.


Как это не связана? Потому, в практическом плане, и нельзя что адрес от ссылки - это адрес объекта.
>>797287
#598 #797287
>>797284
В общем, признай, что ты сам ничего не знаешь, Джон Сноу.
Ссылки на функции возможны, только потому что разрешены стандартом:

>A reference shall be initialized to refer to a valid object or function.


Ссылки на ссылки невозможны, только потому что это не разрешено стандартом. Какого-либо логического объяснения тут нет.
А я пошел.
>>797288
#599 #797288
>>797287

>А я пошел.


Куда? Перекат мне запили!
>>797290
#600 #797290
>>797288
Я как честный кукаретик не умею ничего делать, даже перекаты.
#601 #797335
Установил Visual studio с сайта мелкософтов.

Мне нужно устанавиливать доп библиотеки или нет?
>>797341
#602 #797341
>>797335
Когда понадобятся - тогда и накатишь. Особенно учитывая что часто это нетривиальный процесс. Рекоммендую спиратить Visual Assist. Подсветка кода и автодополнение в разы лучше, чем у студии.
Алсо, сам плюнул на VS через пару лет использования и пользую Qt Creator. Qt изкаробки, можно проверять код и MS компилятором и gcc изкаробки (а учитывая, что gcc строже - это таки плюс). Формошлёпка лучше. Если судьба на лялих занесёт для тебя ничего не поменяется.
>>797514
39 Кб, 421x480
#603 #797427

> vector


> new


Олимпиадник из соседнего треда.
#604 #797435
При наследовании от абстрактного класса с pure virtual методами должны ли мы их делать virtual в derived классе?

class Foo
{
public:
virtual void foo() = 0;
}

class Bar : public Foo
{
public:
/virtual/ void foo() {}
}
>>797451
#605 #797451
>>797435
Не обязательно. Раньше считалось хорошим тоном. Сейчас хороший тон - ставить override.
#606 #797514
>>797341

>Подсветка кода и автодополнение в разы лучше


Как там, в 2010? В 15 студии не покрывается ну максимум треть фич ассиста, а тормозит он по-прежнему. Гораздо лучше добить эту треть ортогональными микродополнениями, каждое про одну фичу.
#607 #797664
if( index < 0 || index > mSize )
return;

warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false

что за блядство? неужели дожились, что уже нельзя 2 числа одинакового типа сравнить без гемора?
>>797666>>802297
#608 #797666
>>797664
Небось decltype(index) == size_t
>>798034
#609 #797795
В /gd/ полтора анона, поэтому спрошу здесь.
Допустим, у нас есть игра. Коммуникация клиент-сервер идет через свой tcp- или udp-протокол. Как сервер идентифицирует пакеты клиента?
Например, в играх на http и ws к каждому запросу прикрепляется session id. Но как это делается на более низком уровне?
Со времен читерства помню, что в diablo 2 пакеты были чистые и не содержали никакой сессионной информации. А в пакетах lineage 2 и wow было несколько байт, которые постоянно менялись. Что-то вроде ключа, хитро ксорящегося после каждого пакета.
В любом случае сервер должен как-то сопоставлять пакет с сущностью юзера.
Неужели это определяется тупо по сокету? И аттакер мог бы совершать действия за другого юзера, имея его айпи и зная порты?
>>797799
#611 #797806
>>797799
Быстро глянул, там ничего не сказано про безопасность. А по структуре пакета понятно, что ее нет.
Я сейчас вспомнил про ассиметричное шифрование. Но почему тогда оно не было применено в таких крупных играх? Видимо, слишком большой оверхед.
#612 #797817
Сап, подводный крестотред. Как использовать делегирующие конструкторы, определяя их снаружи класса, а не внутри?

https://ideone.com/6M1Ea0
>>797826
845 Кб, 1440x900
#613 #797819
Есть один итератор, как получить обыкновенный указатель на объект, который там лежит?

set<T> mySet;
...
set<T>::iterator iter = mySet.find(elem);

&(*iter) возвращает константный указатель. Че делать то?

говно этот ваш STL, слишком СЛОООЖНАА
>>797839
#614 #797826
>>797817
https://ideone.com/zziSSW
По идее ты это имел в виду.
#615 #797839
>>797819
Хотел тебе ответит, но потом посмотрел под спойлер.
>>797853
#616 #797851
Хорошо ли я делаю, пихая везде size_t вместо int? Аж в глазах рябит от этого говна. Пишу класс для обработки графа, все ребра задаю при помощи size_t.
>>797852>>797857
#617 #797852
>>797851
Скорее всего нет.
51 Кб, 283x294
#618 #797853
>>797839
Ну бля, ну че ты обидчивый такой.

хотя я уже все с константными указателями сделал, мне их в принципе менять не надо
>>797854
#619 #797854
>>797853
Лол, при чём тут обида вообще?
#620 #797857
>>797851
У меня size_t вообще 8-байтовый, лел.
#622 #798034
>>797666
нет, все инты
29 Кб, 345x500
#623 #801801
>>786424 (OP)
Привет, крестач.
Решил попытаться освоить кресты, точнее начать уже практическую часть освоения этого языка, но просто встрял на настройке среды как таковой. Я уже, наверное, неделю ебусь с правильной установкой cygwin'а.
Подскажи, анон, как правильно накатить cygwin чтобы netbeans его видел полностью, а то у меня make и debug не вылезают. Гайды пересмотрел, по ним все делал - все тлен. Есть ли альтернативы для писания кода с меньшей степенью ебли при установке?
#624 #802297
>>797664
Он тебе говорит, что если не происходит переполнение, то (X - c) > X всегда false. Может у тебя строкой выше что-то типа index = mSize - 1 и он на index > mSize ругается, как на бессмысленное? Покажи функцию целиком.
99 Кб, 721x717
#625 #802835
Быстровопрос, есть функция, считывающая arg_2 символов по char .
Что передать, чтобы считывало с 10го символа?
char
parray = new char[1000];
abstract_read(parray, 10);
abstract_read(&array[10], 10); //shit code here
>>802836>>802912
#626 #802836
>>802835
разметка, каждый char - это char *
#627 #802912
>>802835
Ну, по идее, как у тебя. Передавай &array[10] или array + 10, что то же самое.
159 Кб, 1600x900
#628 #803650
Как в clion дебажить дочерний процесс? Я пробую так: на брейкпоинте выше форка кидаю в gdb set follow-fork-mode child, но когда дохожу до fork(), получаю пиклейтед. Анон, как пофиксить?
#629 #804135
Стандарт C++ распух до неприличия - а многих действительно важных вещей нет до сих пор. А многих, таких как простого менеджера зависимостей и сборки, не будет никогда.
Поэтому С++ со временем выдавят. На это уйдёт куча времени, но его место займут другие языки. Что забавно, С, думаю, останется сильно дольше - т.к. он гораздо проще.
Осталось только добавить поддержку в Rust'е импорт C headers из коробки. После этого "два крестика" покатится cо всё нарастающей скоростью.
>>805490
#630 #804311
В общем, посмотрел, что тут всем советуют писать калькулятор, а делать утром было нехуй. Кресты начинал учить ещё прошлым летом, но забросил нахуй из-за учёбы. Вот вполне работающий код с костылями:
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <process.h>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "ru_RU.UTF-8");
setlocale(LC_ALL, "");
{
typedef unsigned long int uli;
typedef long double ld;
ld num, a, b, c;
uli x, y, z;
main_menu:
cout << "Введите число, соотвествующее командам, представленным ниже:" << endl;
cout << "1. Сложение." << endl;
cout << "2. Вычитание." << endl;
cout << "3. Умножение." << endl;
cout << "4. Деление." << endl;
cout << "0. Выход из программы." << endl;
cin >> num;
if (num == 1) {
cout << "Введите первое слагаемое:" << endl;
cin >> a;
cout << "Введите второе слагаемое:" << endl;
cin >> b;
c = a + b;
cout << "Сумма слагаемых равна: " << c << endl;
goto main_menu;
}
else if (num == 2) {
cout << "Введите число, из которого будем вычитать:" << endl;
cin >> a;
cout << "Введите вычитаемое:" << endl;
cin >> b;
c = a - b;
cout << "Разность равна: " << c << endl;
goto main_menu;
}
else if (num == 3) {
cout << "Введите число, которое будет умножаться:" << endl;
cin >> a;
cout << "Введите число, на которое будет умножаться первое число:" << endl;
cin >> b;
c = a * b;
cout << "Произведение чисел равно: " << c << endl;
goto main_menu;
}
else if (num == 4) {
cout << "Введите число, которое будет делиться:" << endl;
cin >> a;
del:
cout << "Введите число, на которое будет делиться первое число:" << endl;
cin >> b;
if (b = 0) {
cout << "На ноль делить нельзя! Введите второе число заново." << endl;
goto del;
}
else {
c = a / b;
cout << "Деление дало результат: " << c << endl;
goto main_menu;
}
}
else if (num ==0) {
exit(0);
}
else {
cout << "Число введено неправильно! Попробуйте ещё раз." << endl;
goto main_menu;
}
}
system("pause");
return 0;
}

Я сделал всё правильно?
#630 #804311
В общем, посмотрел, что тут всем советуют писать калькулятор, а делать утром было нехуй. Кресты начинал учить ещё прошлым летом, но забросил нахуй из-за учёбы. Вот вполне работающий код с костылями:
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <process.h>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "ru_RU.UTF-8");
setlocale(LC_ALL, "");
{
typedef unsigned long int uli;
typedef long double ld;
ld num, a, b, c;
uli x, y, z;
main_menu:
cout << "Введите число, соотвествующее командам, представленным ниже:" << endl;
cout << "1. Сложение." << endl;
cout << "2. Вычитание." << endl;
cout << "3. Умножение." << endl;
cout << "4. Деление." << endl;
cout << "0. Выход из программы." << endl;
cin >> num;
if (num == 1) {
cout << "Введите первое слагаемое:" << endl;
cin >> a;
cout << "Введите второе слагаемое:" << endl;
cin >> b;
c = a + b;
cout << "Сумма слагаемых равна: " << c << endl;
goto main_menu;
}
else if (num == 2) {
cout << "Введите число, из которого будем вычитать:" << endl;
cin >> a;
cout << "Введите вычитаемое:" << endl;
cin >> b;
c = a - b;
cout << "Разность равна: " << c << endl;
goto main_menu;
}
else if (num == 3) {
cout << "Введите число, которое будет умножаться:" << endl;
cin >> a;
cout << "Введите число, на которое будет умножаться первое число:" << endl;
cin >> b;
c = a * b;
cout << "Произведение чисел равно: " << c << endl;
goto main_menu;
}
else if (num == 4) {
cout << "Введите число, которое будет делиться:" << endl;
cin >> a;
del:
cout << "Введите число, на которое будет делиться первое число:" << endl;
cin >> b;
if (b = 0) {
cout << "На ноль делить нельзя! Введите второе число заново." << endl;
goto del;
}
else {
c = a / b;
cout << "Деление дало результат: " << c << endl;
goto main_menu;
}
}
else if (num ==0) {
exit(0);
}
else {
cout << "Число введено неправильно! Попробуйте ещё раз." << endl;
goto main_menu;
}
}
system("pause");
return 0;
}

Я сделал всё правильно?
>>804313>>812415
#631 #804313
>>804311
Блядь, с переносом обосрался
>>804320>>805493
#632 #804320
>>804313
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <process.h>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "ru_RU.UTF-8");
setlocale(LC_ALL, "");
{
typedef unsigned long int uli;
typedef long double ld;
ld num, a, b, c;
uli x, y, z;
main_menu:
cout << "Введите число, соотвествующее командам, представленным ниже:" << endl;
cout << "1. Сложение." << endl;
cout << "2. Вычитание." << endl;
cout << "3. Умножение." << endl;
cout << "4. Деление." << endl;
cout << "0. Выход из программы." << endl;
cin >> num;
if (num == 1) {
cout << "Введите первое слагаемое:" << endl;
cin >> a;
cout << "Введите второе слагаемое:" << endl;
cin >> b;
c = a + b;
cout << "Сумма слагаемых равна: " << c << endl;
goto main_menu;
}
else if (num == 2) {
cout << "Введите число, из которого будем вычитать:" << endl;
cin >> a;
cout << "Введите вычитаемое:" << endl;
cin >> b;
c = a - b;
cout << "Разность равна: " << c << endl;
goto main_menu;
}
else if (num == 3) {
cout << "Введите число, которое будет умножаться:" << endl;
cin >> a;
cout << "Введите число, на которое будет умножаться первое число:" << endl;
cin >> b;
c = a * b;
cout << "Произведение чисел равно: " << c << endl;
goto main_menu;
}
else if (num == 4) {
cout << "Введите число, которое будет делиться:" << endl;
cin >> a;
del:
cout << "Введите число, на которое будет делиться первое число:" << endl;
cin >> b;
if (b = 0) {
cout << "На ноль делить нельзя! Введите второе число заново." << endl;
goto del;
}
else {
c = a / b;
cout << "Деление дало результат: " << c << endl;
goto main_menu;
}
}
else if (num ==0) {
exit(0);
}
else {
cout << "Число введено неправильно! Попробуйте ещё раз." << endl;
goto main_menu;
}
}
system("pause");
return 0;
}

Вот так лучше, ящетаю. Можно было бы и раскинуть всё это по разным функциям, но мне как обычно лень.
#632 #804320
>>804313
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <process.h>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "ru_RU.UTF-8");
setlocale(LC_ALL, "");
{
typedef unsigned long int uli;
typedef long double ld;
ld num, a, b, c;
uli x, y, z;
main_menu:
cout << "Введите число, соотвествующее командам, представленным ниже:" << endl;
cout << "1. Сложение." << endl;
cout << "2. Вычитание." << endl;
cout << "3. Умножение." << endl;
cout << "4. Деление." << endl;
cout << "0. Выход из программы." << endl;
cin >> num;
if (num == 1) {
cout << "Введите первое слагаемое:" << endl;
cin >> a;
cout << "Введите второе слагаемое:" << endl;
cin >> b;
c = a + b;
cout << "Сумма слагаемых равна: " << c << endl;
goto main_menu;
}
else if (num == 2) {
cout << "Введите число, из которого будем вычитать:" << endl;
cin >> a;
cout << "Введите вычитаемое:" << endl;
cin >> b;
c = a - b;
cout << "Разность равна: " << c << endl;
goto main_menu;
}
else if (num == 3) {
cout << "Введите число, которое будет умножаться:" << endl;
cin >> a;
cout << "Введите число, на которое будет умножаться первое число:" << endl;
cin >> b;
c = a * b;
cout << "Произведение чисел равно: " << c << endl;
goto main_menu;
}
else if (num == 4) {
cout << "Введите число, которое будет делиться:" << endl;
cin >> a;
del:
cout << "Введите число, на которое будет делиться первое число:" << endl;
cin >> b;
if (b = 0) {
cout << "На ноль делить нельзя! Введите второе число заново." << endl;
goto del;
}
else {
c = a / b;
cout << "Деление дало результат: " << c << endl;
goto main_menu;
}
}
else if (num ==0) {
exit(0);
}
else {
cout << "Число введено неправильно! Попробуйте ещё раз." << endl;
goto main_menu;
}
}
system("pause");
return 0;
}

Вот так лучше, ящетаю. Можно было бы и раскинуть всё это по разным функциям, но мне как обычно лень.
>>805379
39 Кб, 604x587
#633 #805379
#634 #805490
>>804135
менеджер зависимостей и сборки хотят прикрутить уже сейчас. В 17 стандарт не вошёл, печаль, но он будет. А Майкрофост уже пилят свой велосипед без стандарта. Rust не взлетит, потому что он по большей части решает те проблемы C++, которые уже не особо актуальны.
>>807054
#635 #805493
>>804313

>goto


>ни одного класса


Это не кресты, это С с плюсовыми потоками.
>>807729
#636 #807054
>>805490
Но ведь C++ и правда умирает и сдает позиции: http://www.tiobe.com/tiobe_index?page=C++
>>810005
#637 #807729
>>805493
Так говорю же, забросил изучение крестов, остановился на массивах и строках в книге Шилдта (там про функции начиналась глава). Вот и решил что-нибудь простенькое для себя написать, чтобы освежить память.
#638 #809559
Арчешкольник на связи.

Где можно почитать годный мануал по codelite?
А то что-то я запутался
14 Кб, 605x300
#639 #809720
>>786598

>Vim/Emacs


Я ньюфаня и я сразу, не дробя, начал хуярить упражнения в терминале, юзая gcc и vim. Собсна, а зачем мне переключаться между окнами, если можно этого не делать? Алсо, в таком случае не понимаю, почему и зачем под LINUX уже успел появиться Visual Studio, причем официальный? Тут ведь своих средств разработки хватает, хуле мелкомягкие сюда лезут?
>>813719
#640 #810005
>>807054

>>Но ведь C++ и правда умирает


>>Ссылка на страницу по C


Дурак, чтоли? Да и один хер, на 3-м месте после С, чтоб я так умирал.
>>810592
#641 #810592
>>810005
Это потому что ссылка на C++ преобразуется в ссылку на C. Вот так правильно:
http://www.tiobe.com/tiobe-index/cplusplus/
#642 #812410
>>786424 (OP)
Господа кодеры, вопрос такой:
существует ли в нашей вселенной книга/гайд/видеокурс/блог/етц, в котором бы не тупо объяснялся синтаксис языка, а в процессе обучения пилился бы некий более менее реальный проект и давались более менее серьезные задачи?

Все "самоучители" следуют одному шаблону:
объяснение синтаксиса - коротенькие примеры кода - опционально еще более короткие задачи для самостоятельного решения.
>>813872
#643 #812415
>>804311
Я полный нуб в крестах, но чому у тебя там else-if? Не проще ли было реализовать на switch-case?
>>813221
#644 #812600
В чём разница между Qt 5.5 (700+ метров) и Qt Creator 3.5 (80 метров)? Какой качать своим говноинтернетом, чтобы и консольные приложения кодить и ГУИ когда нужно?
sage #645 #812621
Программач, помоги. У меня возник точно такой же вопрос, как и у этого чела с
http://stackoverflow.com/questions/11894124/why-overloaded-operators-cannot-be-defined-as-static-members-of-a-class
Т.е. почему вместо

class A
{
int x;
public:
friend A operator+(const A&, const A&);
};

я не могу использовать

class A
{
int x;
public:
static A operator+(const A&, const A&);
};

и вообще, почему нельзя определять static-операторы?
С английским тяжело, помогите пожалуйста. Что-то я и сам понял, т.е. для второго варианта со static'ом допустимо такое выражение

A x, y, z;
x.operator+(y,z)

тогда да, вообще не ясно что складывать. Но однако черти, по ссылке вверху написали дофига, если ты еще подскажешь мне причины сего факта.
sage #645 #812621
Программач, помоги. У меня возник точно такой же вопрос, как и у этого чела с
http://stackoverflow.com/questions/11894124/why-overloaded-operators-cannot-be-defined-as-static-members-of-a-class
Т.е. почему вместо

class A
{
int x;
public:
friend A operator+(const A&, const A&);
};

я не могу использовать

class A
{
int x;
public:
static A operator+(const A&, const A&);
};

и вообще, почему нельзя определять static-операторы?
С английским тяжело, помогите пожалуйста. Что-то я и сам понял, т.е. для второго варианта со static'ом допустимо такое выражение

A x, y, z;
x.operator+(y,z)

тогда да, вообще не ясно что складывать. Но однако черти, по ссылке вверху написали дофига, если ты еще подскажешь мне причины сего факта.
#646 #812956
Сап крестач, вопрос вам задает ньюфаг:
Есть функция в длл, и есть функция в другой длл
нужно сделать указатель на функцию используя GetProcAddress
проблема в том, что вот такой вот вид,:
origComputeTgtPosition = (bool ( CEGun::)(Vector& vec)) GetProcAddress(GetModuleHandle(TEXT("Common.dll")), "?ComputeTgtLeadPosition@CEGun@@QBE_NAAVVector@@@Z");
приводит к ошибке
невозможно преобразовать "FARPROC" в "FireResult (__thiscall CEGun:: )(const Vector &)"
Говорили что то про касты, читал про typedef и указатели, но никак не могу применить к этому примеру.
#647 #813221
>>812415
Проще, но я не помню, как пользоваться этой инструкцией.
sage #648 #813719
>>809720
Ты попробуй порефакторить под Vim/Emacs.
#649 #813724
Поскольку в шапке приведенные учебники описаны как говно, спрашиваю тут: я имею опыт коммерческой разработки на Java, JS, PL\SQL и PHP, игрался со всякими питонами, го, руби, неплохо разбираюсь в паттернах, прошивки для контроллеров на ASM писал и т.д. Короче, программировать более-менее умею и сейчас хочу наконец нормально освоить плюсы, заброшенные после универа.
ЧЁПОЧИТАТЬ, чтобы освоить их как технологию, без всяких нравоучений о том, какое сложное устройство этот MP3-плеер и какую важную роль компьютеры играют в нашей жизни?
>>813869
#650 #813869
>>813724
Всё, отбой.
The C++ Programming Language Страуструпа отлично заходит.
#651 #813872
>>812410
Просто C++ говно без задач.

А если серьезно, двачую вопрос. Сам сейчас планирую взять один проект на ноджс и переписать часть в виде модулей на крестах.
#652 #813947
>>786424 (OP)
Иногда один С++ заебывает, хочу почитать для развития что-нибудь про алгоритмы и организацию самих железок. Есть что-нибудь для ньюфагов, но без воды?
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 7 августа 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски