@ProCxx

Страница 2177 из 2477
Ilia
05.07.2018
05:35:23
Я настроен скептически, хотя лучи уважения ему посылаю
Что-то как-то странно обсуждать язык, который нигде не описан... Да ещё и DSL...

Alexander Alprog
05.07.2018
05:36:15
ну это моя предметная область

если вдруг, кому интересно (минутка наглого самопиара)

Google
Ilia
05.07.2018
05:38:35
Ну ок, но С++ тут при чем? Не ну можно конечно по это побазарить ( не я только)

Alexander Alprog
05.07.2018
05:39:21
Ну как причём? Это ж как замена С++. С кем ещё базарить на тему всяких D, go и rust?

Не с C#-программистами же. А комьюнити самих языков маленькие. И там фанатики одни :)

Ilia
05.07.2018
05:59:25
Фанатики это плохо

Да я не против побазарить, описание языка где?

Без него как-то...

Alexander Alprog
05.07.2018
06:00:23
https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md

нормальных спеков нет, только такое + стримы видео, но там долго

вот сборник всех ресурсов: https://inductive.no/jai/

Constantine
05.07.2018
07:19:54
хм... а в бусте есть smartptr, который лежит под капотом std::function? можно его в стандарт притащить?

Constantine
05.07.2018
08:07:58
А для чего?
Например, для type erasure с сохранением копирования, как это нужно в std::function :)

Antony
05.07.2018
08:09:06
std::any?

Google
Anton
05.07.2018
08:09:44
А кому-нибудь приходилось ускорять линковку либы? У нас один из проектов под MSVS линкуется 5минут без ltcg. Есть ли тулы, которые подсвечивают проблемы?

Antony
05.07.2018
08:09:45
Самый продвинутый способ делать type erasure - это Boost.TypeErasure

Самый продвинутый способ делать type erasure - это Boost.TypeErasure
В нём можно выбирать операции, которые нужны от типа и генерировать свои указатели/контейнеры

Constantine
05.07.2018
08:10:39
std::any?
тут в любом случае удивительное дело - все известные мне реализации std::function используют этот указатель, но наружу его не показывают

Constantine
05.07.2018
08:12:46
Он там смешан с SSO и весьма специфичен Поэтому наружу и не показывают
А SSO там не получается естественным свойством такого указателя?

Antony
05.07.2018
08:16:03
ну если нужно с SSO, то это std::function А ели нужна часть std::function, которая на куче может хранить, тогда ближайший аналог Boost.TypeErasure

Constantine
05.07.2018
08:17:10
Мне здесь именно что непонятно, почему то, что лежит под std::function, не является законченным типом с точностью до шаблонизации

Вроде это полноценная версия unique_ptr для CC

Antony
05.07.2018
08:19:19
Но зачем? Если нужно хранить функции - то std::function Если нужно что-то большее - то оно не умеет :(

Constantine
05.07.2018
08:22:06
Оно же там в потрохах не функцию хранит, оно (если я ничего не напутал) хранит потомок интерфейса с аллокатором вместе Т.е. если цепочку раскрутить, получается какой-то модифицированный unique_ptr с дополнительным хранением оригинального аллокатора для копирования и small object optimization

(и вроде как это основной способ хранить полиморфное значение CC-объекта)

Antony
05.07.2018
08:27:42
Аллокатор он начиная с C++17 хранить не должен - там возникли какие-то суровые проблемы у разработчиков стандартной библиотеки с хранением type erased аллокаторов Остаётся только std::unique_ptr<detail::func_base<YourType>> func_base в простом случае реализован как-то наподобие https://github.com/boostorg/any/blob/develop/include/boost/any.hpp#L152-L202, только ещё с operator()

А вот в более сложном случае, он реализован крайне неприглядно, для того чтобы избегать RTTI https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/any#L551 ^ Такое людям страшно показывать

Но из ссылки выше видно почему наружу не показывают - там два манагера, один SSO, другой для динамики, и управлять ими надо через команды Поэтому это оборачивают в приятный интерфейс наподобие std::any

Ура! Редакторы заапрувили пост о C++20 https://habr.com/company/yandex/blog/413719/

Antony
05.07.2018
08:58:28
Встреча User Group планируется7
Уже была, но мы раздумываем над ещё одной. Возможно в конце лета проведём (не не факт что в Москве)

Google
Antony
05.07.2018
09:18:54
модули будут?
Да, но не понятно когда

Constantine
05.07.2018
09:19:22
Да, но не понятно когда
Это в смысле существует мнение, что не успеют добавить в стандарт до 2020 года?

Antony
05.07.2018
09:21:43
Ага

Constantine
05.07.2018
09:22:25
пойду выпью)

Antony
05.07.2018
09:23:05
модули будут?
вообще удивительно, что это вопрос ещё никто не задал в посте :) Традиции нарушаются

Constantine
05.07.2018
09:23:09
ладно, вроде, за следующие лет 5 расчетное время компиляции не должно превысить полтора часа

A.D.
05.07.2018
09:23:10
Ура! Редакторы заапрувили пост о C++20 https://habr.com/company/yandex/blog/413719/
а есть пропозал на constexpr virtual? я как-то совсем не могу понять, что это.

Constantine
05.07.2018
09:23:46
технически если бы требование constexpr наследовалось, можно было бы в vtbl писать результат вместо вызова функции

Ilia
05.07.2018
09:24:39
Ура! Редакторы заапрувили пост о C++20 https://habr.com/company/yandex/blog/413719/
Кстати, если вам не нравятся неконсистентные имена типов (string_view, atomic_ref), то выскажите своё недовольство по ссылке. Если будет достаточное количество голосов, постараемся все имена привести к одному виду. А что значит тут "неконсистентные"?

Azoyan
05.07.2018
09:25:17
Мне не нравится спецсимвол в ключевом слове

Аттрибутивно-ассоциативный ряд
05.07.2018
09:27:25
Ура! Редакторы заапрувили пост о C++20 https://habr.com/company/yandex/blog/413719/
Редакторам привет: [[ensHures ret_value: !ret_value.empty() ]] - шурочка, глянь щоб рет не пустой был

Ilia
05.07.2018
09:27:27
вот мне не нравится, как обозвали pointer_wrapper, я до сих пор не могу запомнить название этого *_ptr
Не нравится -- дело субъективное. А что значит НЕКОНСИСТЕНТНЫЕ?

A.D.
05.07.2018
09:28:31
Не нравится -- дело субъективное. А что значит НЕКОНСИСТЕНТНЫЕ?
там по ссылке же пример есть: мол, разные суффиксы

Google
A.D.
05.07.2018
09:28:54
Admin
ERROR: S client not available

Denis
05.07.2018
09:30:19
Нужен хелп. Забыл ресурс, на котором указаны отсортированные +/- языков программирования. Кто знает?

Ilia
05.07.2018
09:31:21
там по ссылке же пример есть: мол, разные суффиксы
Ну, тогда я бы лучше string_ref назвал. Но проблема в том, что, как я подозреваю, string_view -- это НЕ ТОЛЬКО ССЫЛКА, но ещё и ссылка на определённые части строки. Т.е. разные суффиксы вполне оправданы.

fixed
А что FIXED-то? Там H был?

Antony
05.07.2018
09:32:22
Не нравится -- дело субъективное. А что значит НЕКОНСИСТЕНТНЫЕ?
Имена типов, выступающих в качестве не владеющего класса, формируются по разным правилам. Если бы имена были бы например string_view,atomic_view,array_view - было бы консистентно

Aleksandr
05.07.2018
09:33:35
https://godbolt.org/g/THtZVj всем привет! почему не компилируется вот это? тернарный оператор же вычисляет второй и третий операнды только в зависимости от первого.

Antony
05.07.2018
09:34:17
Так что извини, Антон, я лично не будут по ссылке голосовать...
Дык на то оно и голосование, чтобы каждый сказал что думает. Не нравится - стоит дизлайк влепить

Aleksandr
05.07.2018
09:36:23
if constexpr используй
где конкретно?

Anatoly
05.07.2018
09:36:34
где конкретно?
вместо тернарного оператора

Google
Ilia
05.07.2018
09:36:37
где конкретно?
Вместо тернарного, очевидно.

блин опередил

Aleksandr
05.07.2018
09:36:49
Там, кажется, рекурсивно пытается инстанцировать шаблон
именно. но вот вопрос, зачем он это делает, когда не надо, потому что первый операнд false

Anatoly
05.07.2018
09:37:04
именно. но вот вопрос, зачем он это делает, когда не надо, потому что первый операнд false
а почему ему это не делать? компилятор все инстанцирует, что может быть выполнено в рантайме, а тебе нужен компайлтайм, поэтому if constexpr

Denis
05.07.2018
09:37:13
google.com
Ты реально смешной

Azoyan
05.07.2018
09:37:45
именно. но вот вопрос, зачем он это делает, когда не надо, потому что первый операнд false
А тернарник вроде как сначала обе части вычисляет. Я где-то такое читал. Но это лучше спросить у гуру.

Aleksandr
05.07.2018
09:38:12
нет, он вычислят только если надо. вопрос - зачем инстанцировать, если не надо вычислять)

Anatoly
05.07.2018
09:38:35
А тернарник вроде как сначала обе части вычисляет. Я где-то такое читал. Но это лучше спросить у гуру.
он не вычисляет, он компилирует вызов, розыгрыш которого произойдет в рантайме

Ilia
05.07.2018
09:38:45
Ilia
05.07.2018
09:39:16
нет, он вычислят только если надо. вопрос - зачем инстанцировать, если не надо вычислять)
Инстанциировать и вычислять -- разные вещи же. Код-то он должен сгенерировать.

Antony
05.07.2018
09:39:40
нет, он вычислят только если надо. вопрос - зачем инстанцировать, если не надо вычислять)
Компилятору надо проверить, что вы написали в неактивной части выражения валиный код Даже если на этапе компиляции он знает, что эта ветка выполняться не будет - он всё равно проверит что в другой ветке что-то, что можно скомпилировать

Ilia
05.07.2018
09:40:29
Ну да, вот он и пытался скомпилировать
По крайней мере в тернарном должы быть проверены на совместимость результирующие типы двух выражений вокруг :

Aleksandr
05.07.2018
09:40:52
да, имеет смысл, спасибо

Страница 2177 из 2477