-
- 1. std::unique_ptr<T> занимает столько же места, сколько обычный указатель при использовании malloc, или +указатель на функцию удаления, если функция кастомная и динамическая. Само автоматически там вызывается конструктор, если ты вызываешь lloyd(317 знак., 02.04.2018 21:43)
- Вот читаю про std::unique_ptr<T> и офигеваю. -> Evgeny_CD(1713 знак., 02.04.2018 22:25, ссылка, ссылка)
- Правильно ли я понимаю, что фактически, в C17++ есть новые фишки, которые выглядят как "библиотечные фишки" типа std::unique_ptr<T>, но это не только библиотека, это еще и некие встроенные правила компилятора, как он генерит код, который Evgeny_CD(40 знак., 02.04.2018 22:05)
- Нет там никаких "правил компилятора". Т.е. есть, но другие, совсем простые, а не то, о чём ты подумал. Просто оно многословно и громоздко всё выглядит, но реально 90% отрабатывает на этапе компиляции и не стоит ничего, а 10% даёт совсем минимум fk0(124 знак., 03.04.2018 00:05, ссылка)
- спасибо! - Evgeny_CD(03.04.2018 00:26)
- По совокупности на сколь-нибудь большом проекте в эффективности С++ при грамотном использовании не сомневаюсь. Я просто пытаюсь оценить доступную степень контроля над всем этим. - Evgeny_CD(03.04.2018 00:07)
- Уникальная ссылка - это стандартная реализация матана, впихнутого в суть языка. Но так да, target = std::move(T &&source) - это не вызов функции, а указание компилятору что делать (есть еще и перемещающий конструктор). lloyd(88 знак., 02.04.2018 22:21)
- Вот он, самый смак! Если есть языки с программируемым синтаксисом, и это действительно круто, то в С++17 мы получили набор правил в виде текста стандарта, и бедолаги компилерописатели впихивают их в код компилера.... Вот это да.... - Evgeny_CD(02.04.2018 22:28)
- Как грамотно черти изобрели! Т.е. если я имею исходник на С++17, то "назад" я его никак не впихну. Никак-никак! Потому что это не просто написать хитровывернутую либу или шаблон. Это надо поведение компилятора править! Evgeny_CD(72 знак., 02.04.2018 22:32)
- Периодически поглядываю что наши гуру на Питоне пишут. Смотрю текст модулей, прыгаю по файлам и минут за 15 такой медитации прихожу к пониманию что мне совсем-совсем не жалко той двадцатикратной (?) потери производительности. - Скрипач(02.04.2018 22:38)
- Часто и 50 кратной не жалко. Но я должен понимать, что я разрешаю и в какой момент... - Evgeny_CD(02.04.2018 22:57)
- Сжигать надо. - Точка опоры(02.04.2018 23:25)
- И близко нет. Вирт - прав, программа это прежде всего структура данных. Критически-императивная составляющая не более 10% и легко выгораживается в отдельный загончик. Скрипач(149 знак., 02.04.2018 23:14)
- Часто и 50 кратной не жалко. Но я должен понимать, что я разрешаю и в какой момент... - Evgeny_CD(02.04.2018 22:57)
- Периодически поглядываю что наши гуру на Питоне пишут. Смотрю текст модулей, прыгаю по файлам и минут за 15 такой медитации прихожу к пониманию что мне совсем-совсем не жалко той двадцатикратной (?) потери производительности. - Скрипач(02.04.2018 22:38)
- Как грамотно черти изобрели! Т.е. если я имею исходник на С++17, то "назад" я его никак не впихну. Никак-никак! Потому что это не просто написать хитровывернутую либу или шаблон. Это надо поведение компилятора править! Evgeny_CD(72 знак., 02.04.2018 22:32)
- Вот он, самый смак! Если есть языки с программируемым синтаксисом, и это действительно круто, то в С++17 мы получили набор правил в виде текста стандарта, и бедолаги компилерописатели впихивают их в код компилера.... Вот это да.... - Evgeny_CD(02.04.2018 22:28)
- Нет там никаких "правил компилятора". Т.е. есть, но другие, совсем простые, а не то, о чём ты подумал. Просто оно многословно и громоздко всё выглядит, но реально 90% отрабатывает на этапе компиляции и не стоит ничего, а 10% даёт совсем минимум fk0(124 знак., 03.04.2018 00:05, ссылка)
- Кратко. 1) "возьми и используй" крайне стремно на практике. 2) Разобраться в новых фичах - крайне непростая задача. Совокупная эффективность кодинга с учетом кучи "холостых экспериментов" удручает... Evgeny_CD(778 знак., 02.04.2018 20:49)
- Все по Скрипачу... - Evgeny_CD(02.04.2018 20:50)
- 1. std::unique_ptr<T> занимает столько же места, сколько обычный указатель при использовании malloc, или +указатель на функцию удаления, если функция кастомная и динамическая. Само автоматически там вызывается конструктор, если ты вызываешь lloyd(317 знак., 02.04.2018 21:43)