
Roman
25.09.2018
20:17:23

Igor
25.09.2018
20:18:07
Отсутствие variadic генериков намного более сильное ограничение как по мне :)

Roman
25.09.2018
20:18:45
Ну т.е. в плане compile-time вычислений C++ пока что сильнее

Google

Roman
25.09.2018
20:19:28
В расте мне пришлось бы сделать отдельное поле для хранения ширины
Т.е. в данном случае C++ в два раза эффективнее по памяти

Igor
25.09.2018
20:21:23

Roman
25.09.2018
20:21:49
И первое возможно тоже

Anton
25.09.2018
20:23:36
1. Модули
2. Концепты

Roman
25.09.2018
20:23:52
Основной минус C++ это арахичный синтаксис из Си. Но с другой стороны совместимость с Си это и плюс

Igor
25.09.2018
20:24:06
Второе как я понмаю попытаются пофиксить частично в c++20
Частично, но будет все равно не совсем то. Раст гарантирует что если подстановка удовлетворяет требованиям то все скомпилируется, в C++ такой гарантии не будет. Страуструп говорил на кейноуте CppCon что эксперименты ставились по строгой гарантии, но для обратной совместимости ее не будет.

Roman
25.09.2018
20:26:34
Но навыки чтения ошибок о подстановке шаблонов развиваются с опытом. Сейчас меня это вообще не беспокоит. Концепты нужны скорее для документации
В общем больше всего в C++ бесит легаси и UB, остальное не так больно
Надеюсь статические lifetime и bounds чекеры со временем снизят боль от UB
Непонятно почему в концептах нет "implements" или чего-то похожего

Google

Constantine
25.09.2018
20:32:14

Roman
25.09.2018
20:32:19
хотя наверное получилось бы монструозно:
class MyType implements Hashable, Swappable...
ну чтобы при создании класса сразу указать какие концепты он реализовывает

Constantine
25.09.2018
20:32:49

Igor
25.09.2018
20:32:57

Roman
25.09.2018
20:33:45

Constantine
25.09.2018
20:35:07

Roman
25.09.2018
20:35:28
ну в смысле функции
члены класса и свободные
т.е. если написано static_assert(Hashable) IDE должна автоматически генерить специализацию
наверное можно сделать

Igor
25.09.2018
20:36:56
Не получится, там произвольные выражения могут быть в требованиях.

Roman
25.09.2018
20:37:32
т.е. проверить можно, а удовлетворить нельзя?
NP полная проблема

Aidar
25.09.2018
20:38:13

Constantine
25.09.2018
20:38:19

Anton
25.09.2018
20:38:43
сейчас чот посмотрел и там всё поменяли

Aidar
25.09.2018
20:39:07

Roman
25.09.2018
20:39:21
Ну гугл кодстайл убил эксепшоны в C++, за это спасибо

Google

Anton
25.09.2018
20:39:27
в 90-х по-моему не было его

Roman
25.09.2018
20:40:14
Но там было явно написано что нельзя. Плюс авторитет Гугла

Aidar
25.09.2018
20:40:38
У гугла есть какойто авторитет в сообществе си++ чтоль?
Они же го изобрели ваще

Anton
25.09.2018
20:40:49
вообще как бэ в мире
у себя кстати они его используют вместо bash / perl / python

Roman
25.09.2018
20:41:26
Хотя Саттер сейчас вроде пытается починить эксепшоны : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0709r1.pdf

Aidar
25.09.2018
20:41:28

Anton
25.09.2018
20:41:51
с другой стороны хорошо когда твой код тупой
приятно читать )

Constantine
25.09.2018
20:42:25

Aidar
25.09.2018
20:43:20
В чем проблема? Опять кто-то решил что выброс это легитимный результат?

Roman
25.09.2018
20:43:24

Aidar
25.09.2018
20:43:29
Зачем их чинить

Roman
25.09.2018
20:44:12
Зачем их чинить
Чтобы можно их было юзать. Сейчас по Гугл стайлу все компилируют с -fno-exceptions

Aidar
25.09.2018
20:44:59
Аутизм
Саттер не для этого делает это есличто

Google

Constantine
25.09.2018
20:45:35

Anton
25.09.2018
20:46:41
On platforms that use the [Itanium ABI], exceptions are required to be allocated on the heap (modulo
potential optimizations that are not actually implemented today, such as the proposed LLVM optimization
in [Glisse 2013]). Heap allocation requires unpredictable time, even on allocators that avoid global
synchronization in the memory allocator
кто-то ещё использует Itanium?

Matwey
25.09.2018
20:47:15

Anton
25.09.2018
20:47:47
а какой плюс, если его можно заменить рандом компом из магазина бытовой электроники?
core i5 какой-нибудь будет быстрее

Matwey
25.09.2018
20:48:57
Это же надо мигрировать бережно настроенную 15 лет назад систему со всеми самопальными сервисами, и всеми БД.

Roman
25.09.2018
20:49:17

Anton
25.09.2018
20:49:38
да ладно?
Itanium очень отличался же архитектурно от x86 и всяких там RISC

Roman
25.09.2018
20:50:19
Ну да, и clang и gcc используют itanium abi под x86

Alex Фэils?︙
25.09.2018
20:50:21

Anton
25.09.2018
20:50:32

Alex Фэils?︙
25.09.2018
20:52:17

Roman
25.09.2018
20:59:11

Alex Фэils?︙
25.09.2018
21:02:11

Roman
25.09.2018
21:03:03
Я думал они все на bazel переводят

Anton
25.09.2018
21:03:27
gyp и gn - это же build systems

Alex Фэils?︙
25.09.2018
21:03:44
а все равно питоноскриптов по кодбазам навалом

Evgeniy
25.09.2018
21:03:50

Google

Anton
25.09.2018
21:04:00
cmake говно )

Roman
25.09.2018
21:04:05

Anton
25.09.2018
21:04:09
почти всё что угодно лучше чем cmake

Evgeniy
25.09.2018
21:04:35

Anton
25.09.2018
21:04:51

Constantine
25.09.2018
21:05:39
"Функция может вернуть что угодно" просто грубо нарушает всю типизацию возвращаемого значения

Roman
25.09.2018
21:06:28

Constantine
25.09.2018
21:06:49

Roman
25.09.2018
21:07:52
Т.е. фактически большинство эксепшонов в легаси коде на самом деле являются ошибками а не эксепшонами.
А в тех случаях где они полезные они являются control flow конструкцией, а не способом работы с исключительными ситуациями

Constantine
25.09.2018
21:08:39
Вот смотрите, у меня есть функция, возвращает string, называется "load_string", читает весь файл целиком

Anton
25.09.2018
21:09:29
у меня есть файл 1Tb
ты проиграл

Roman
25.09.2018
21:09:44

Constantine
25.09.2018
21:09:52
Дело не в bad_alloc

Roman
25.09.2018
21:10:02
Команда MS Office это решает именно с помощью эксепшона

Constantine
25.09.2018
21:10:12
Да памяти хватит
Раз в жизни загрузчик ресурсов не найдет файл
Как я должен описать ошибку чтения?