Здравствуйте, Анатолий Широков, Вы писали:
АШ>На хабре вышла хорошая статья от ПВС о новшествах С++17: https://habrahabr.ru/company/pvs-studio/blog/340014/
Первая мысль была что они проверили реализацию одного из компиляторов.
Alexander G:
AG>Я бы не сказал, что union не может хранить non-POD типы. Уже есть unrestricted unions начиная с С++11.
Еще бы рефлексию хорошую, и можно будет эффектно взламывать private
Модератор-националист Kerk преследует оппонентов по политическим мотивам.
johny5:
ДФ>>Еще бы рефлексию хорошую, и можно будет эффектно взламывать private J>#define private public
Неа. Саттер раскритиковал такое рещение как неуниверсальное.
У методов с разным спецификатором доступа может быть разный мэнглинг.
Модератор-националист Kerk преследует оппонентов по политическим мотивам.
Здравствуйте, Анатолий Широков, Вы писали:
АШ>На хабре вышла хорошая статья от ПВС о новшествах С++17: https://habrahabr.ru/company/pvs-studio/blog/340014/
То самое чувство когда вместо модулей колбасы привезли сахар. Причём в кубиках.
Вопрос:
Когда будет нормальное управление инлайнингом для time critical кода или тоже потом? Вот прямо сейчас два уважающих (или нет?) компилятора Visual Studio 2015 и Intel Parallel Studio 2017 сосут лапу (или что покрупнее?) на инлайне, так что приходится ему подсказывать через __forceinline. По другому эти творения инженерной мысли не понимают.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, Vain, Вы писали:
V>Вопрос: V>Когда будет нормальное управление инлайнингом для time critical кода или тоже потом? Вот прямо сейчас два уважающих (или нет?) компилятора Visual Studio 2015 и Intel Parallel Studio 2017 сосут лапу (или что покрупнее?) на инлайне, так что приходится ему подсказывать через __forceinline. По другому эти творения инженерной мысли не понимают.
По идее, ты можешь участвовать в формировании языка, направляя предложения в комитет по стандартизации С++ через рабочую группы: https://stdcpp.ru/
Опережающее описание для вложенных классов в каком тысячелетии сделают?
switch по строкам?
строка как параметр шаблона?
enum в строку и обратно?
PS: Ящитаю, что язык давно пора объявлять deprecated. Хотя бы назначить дату прекращения разработки вместо того чтобы продолжать на пол шишечки насиловать труп.
Re[2]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, Kluev, Вы писали:
АШ>>На хабре вышла хорошая статья от ПВС о новшествах С++17: https://habrahabr.ru/company/pvs-studio/blog/340014/
K>Опережающее описание для вложенных классов в каком тысячелетии сделают?
А это что?
K>строка как параметр шаблона?
Вроде как только в D такое есть. Насколько часто это там используется? Можно пример того, что бы вам хотелось сделать в C++ с помощью данной фичи?
K>enum в строку и обратно?
Когда добавят compile-time рефлексию и/или метаклассы, это появится. Т.е. в С++20 или C++23 можно ждать.
K>PS: Ящитаю, что язык давно пора объявлять deprecated. Хотя бы назначить дату прекращения разработки вместо того чтобы продолжать на пол шишечки насиловать труп.
А с мегатоннами легаси что делать?
Re[3]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, so5team, Вы писали:
S>Здравствуйте, Kluev, Вы писали:
АШ>>>На хабре вышла хорошая статья от ПВС о новшествах С++17: https://habrahabr.ru/company/pvs-studio/blog/340014/
K>>Опережающее описание для вложенных классов в каком тысячелетии сделают?
S>А это что?
Опережающее описание. Для вложенных классов.
S>Когда добавят compile-time рефлексию и/или метаклассы, это появится. Т.е. в С++20 или C++23 можно ждать.
все это было нужно еще в с++98
K>>PS: Ящитаю, что язык давно пора объявлять deprecated. Хотя бы назначить дату прекращения разработки вместо того чтобы продолжать на пол шишечки насиловать труп.
S>А с мегатоннами легаси что делать?
для легаси можно использовать С++RipEdition
Re[4]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, Kluev, Вы писали:
K>>>Опережающее описание для вложенных классов в каком тысячелетии сделают?
S>>А это что?
K>Опережающее описание. Для вложенных классов.
В виде примеров кода вы свои хотелки выразить можете? Как по поводу вложенных классов, так и по поводу строк в качестве параметров для шаблонов.
Или в ваши намерения конструктивное общение не входит?
Re[5]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, so5team, Вы писали:
S>Здравствуйте, Kluev, Вы писали:
K>>>>Опережающее описание для вложенных классов в каком тысячелетии сделают?
S>>>А это что?
K>>Опережающее описание. Для вложенных классов.
S>В виде примеров кода вы свои хотелки выразить можете? Как по поводу вложенных классов, так и по поводу строк в качестве параметров для шаблонов.
S>Или в ваши намерения конструктивное общение не входит?
Мое конструктивное предложение язык не развивать, комитет распустить. Примеры кода здесь не нужны.
Re[3]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, so5team, Вы писали:
K>>строка как параметр шаблона? S>Вроде как только в D такое есть. Насколько часто это там используется? Можно пример того, что бы вам хотелось сделать в C++ с помощью данной фичи?
Очень много чего можно делать с помощью этой возможности, о чём в C++ можно только мечтать. Вот http://vibed.org/docs#html-templates известный пример (если что, приложение собирается без всяких препроцессоров, только компилятором D). В общем можно задавать различные EDSL в качестве строк (при этом разбираемым в процессе компиляции и превращаемыми в код). Правда для удобной работы с подобными инструментами требуется не только задание строки, как параметра шаблона, но и нормальная работа со строками (применение различных строковых функций и т.п.) во время компиляции. Но это уже проще добавить, собственно развитие подхода constexpr движется в этом направление, только очень медленно.
Кстати, в современном C++ уже написано множество страшнейших велосипедов для эмуляции слабого подобия подобной функциональности из D, в основном через посимвольное задание строк времени компиляции. Так что очевидно, что имеется огромная проблема в этой области.
Re[4]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, alex_public, Вы писали:
K>>>строка как параметр шаблона? S>>Вроде как только в D такое есть. Насколько часто это там используется? Можно пример того, что бы вам хотелось сделать в C++ с помощью данной фичи?
_>Очень много чего можно делать с помощью этой возможности, о чём в C++ можно только мечтать. Вот http://vibed.org/docs#html-templates известный пример (если что, приложение собирается без всяких препроцессоров, только компилятором D).
Покажите, пожалуйста, пальцем на конкретный пример из документации. Может быть речь идет вот об этом?:
router.get("/", staticTemplate!"index.dt");
Если так, то что staticTemplate делает с именем "index.dt" в компайл-тайм? Загружает содержимое файла с именем "index.dt" и генерирует из него D-шный код?
Re[5]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, so5team, Вы писали:
_>>Очень много чего можно делать с помощью этой возможности, о чём в C++ можно только мечтать. Вот http://vibed.org/docs#html-templates известный пример (если что, приложение собирается без всяких препроцессоров, только компилятором D). S>Покажите, пожалуйста, пальцем на конкретный пример из документации. Может быть речь идет вот об этом?: S>
router.get("/", staticTemplate!"index.dt");
S>Если так, то что staticTemplate делает с именем "index.dt" в компайл-тайм? Загружает содержимое файла с именем "index.dt" и генерирует из него D-шный код?
Да, именно так. Причём всё это делается исключительно средствами метапрограммирования на шаблонах, такого же идеологически, как и в C++, только гораздо более продвинутого.
Re[6]: [NEWS] Вышла статья о новшествах С++17 от ПВС
Здравствуйте, alex_public, Вы писали:
S>>Если так, то что staticTemplate делает с именем "index.dt" в компайл-тайм? Загружает содержимое файла с именем "index.dt" и генерирует из него D-шный код?
_>Да, именно так. Причём всё это делается исключительно средствами метапрограммирования на шаблонах, такого же идеологически, как и в C++, только гораздо более продвинутого.
Ну тогда ключевой момент здесь вовсе не в строковом параметре шаблона, а в двух свойствах D-шной конструкции mixin, которой вообще нет в C++: a) возможность взять содержимое внешнего файла и b) возможность отдать компилятору строку для включения ее содержимого в процесс компиляции (строка может быть сформирована и в compile-time). При наличии возможности инжекции нового кода в C++ можно было бы обойтись и без строковых параметров шаблонов, только за счет constexpr. Тогда, теоретически, можно было бы сделать что-то вроде:
Проблема отсутствия таких средств в C++ на данный момент в большей степени в отсутствии средств инжекции (вероятно, Саттер сейчас эту тему продвинет) и, возможно, в более слабых возможностях constexpr-функций/типов в C++ по сравнению с CTFE в D.
Изначальный же вопрос, на который хотелось бы получить ответ, касается именно использования строк как параметров шаблонов. Если в 99% процентах случаев в D строки-параметры нужны только для последующих mixin-ов, то понятно. Если есть какие-то другие кейсы, то интересно было бы их увидеть.