🦥Alex Fails
🦥Alex Fails
збс
🦥Alex Fails
🦥Alex Fails
хотя хочется в стиле STL ее зафигачить
🐙 Antony
https://godbolt.org/g/L9fSij
А Clang в этом месте хорош https://godbolt.org/g/8YrkKU
Он вытащил r*r отдельно и из таблицы берёт только константу для домножения в случае test_switch_native
В случае массива функций он не смог заинлайнить методы
А вот GCC не заинлайнил даже в первом случае, да ещё в добавок вместо jmp по смещению нагенерил лесенку if. Ну и вот эту упячку сотворил:
.L15:
rep ret
.L16:
rep ret
Berkus
JBáruch
Я не понял, что это значит 😥
🦥Alex Fails
🐙 Antony
Вот это самое запоминающееся http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0244r0.html
Anatoly
Антон, а Boost.Locale он на базе ICU работает?
Berkus
🐙 Antony
🦥Alex Fails
мне понравилась история на хабре про то, как в скулайт добавить поддержку юникода (вернее, collation), и чтоб сильно не разжирел он. Там, правда, про Паскаль: https://habrahabr.ru/post/150543/
Anatoly
в Go тоже элегантно сделано: string у них содержит byte, а тип rune представляет unicode символ
Anatoly
ну и обвязка для работы
🦥Alex Fails
как я понял, тут проблема с натягиванием совы на глобус, т.е. UTF-8 на имеющийся интерфейс строк, iostreams, и пр.
🦥Alex Fails
🦥Alex Fails
https://github.com/Zensey/sqlite3_unicode вот глобус в SQLite
Stanislav
Anonymous
надо, Стася, надо
🦥Alex Fails
Anonymous
🦥Alex Fails
В общем, основная проблема - в итераторах. Надо научиться нормально ходить по код-пойнтам
Pavel
Подскажите плиз
Запускаю приложение ARM c AddressSanitizer
sanitizer_common.cc:120 "((0 && "unable to mmap")) != (0)" (0x0, 0x0)
ERROR: Failed to mmap
На простом malloc
Ни кто не сталкивался?
🦥Alex Fails
хм, мб идея декоратора над тупой строчкой сработает..
Anatoly
Если ввести отдельную концепцию для строк и unicode-a (мой пример с Go) и оставить возможность конвертировать в std::string и std::wstring, то большой работы не потребовалось бы
Anatoly
строка - это набор байт, а последовательность байт представляющая юникод символ - руна
Anatoly
ну и делать сразу utf-8 стандартом де-факто для строк, в этом случае для кодировок вмещающихся в 128 никаких изменений.
Vladislav
🦥Alex Fails
string_utf8_view
Vladislav
Anatoly
Anatoly
путь будет таже null-terminated строка
Vladislav
а зачем нужна длина в байтах, если оно будет null terminated?
Anatoly
а new_string может хранить все что ему надо
Vladislav
считается просто одной asm командой
Anatoly
Vladislav
а вот в рунах посчитать посложнее будет
Vladislav
лишний доп параметр. проще и надежнее (error-prone) пересунуть тот же strlen() внутрь апи и не требовать указания
Vladislav
я про сферический апи в вакууме, конечно же )
Anonymous
Anonymous
вайфу фигни не скажет
Nikolai
Я уже чувствую как мой мозг понижается в самооценке....
melvin
"simple made easy"
Anonymous
Фу, умная фраза! Кыш отсюда!
Anonymous
чому в С++ не вошел такой способ инициализации полей структуры из С?:
Foo blah = { .a = 2, .b = 's' };
Причем подобное планируют вернуть в С++20
Anonymous
почему вернуть
Anonymous
кажется это было только в качестве расширения какого-то в GCC
Anonymous
расширение != стандарт, вот
Aidar
Это си99
Aidar
В си++ никогда не было си99
Anonymous
интересно, почему
Aidar
Ну там всякие restrict
Aidar
const
🐙 Antony
Как починят, должно стать одинаково по производительности.
Anonymous
Ну так С99 существует где-то с 2000 года. После него же были всякие С++11, С++14, С++17 - и почему-то эту плюху так и не впилили. Что повлияло на решение впилить это в С++20?
melvin
аналогично: почему не впилили файлы в стдлибу?
Anonymous
В смысле? А как же структура FILE и всякие там fopen?
Anonymous
а лол. Тому що С++ совместим с С (не полностью, правда), но никак не наоборот
Aidar
Anonymous
ага
Aidar
сжечь
🦥Alex Fails
с C11 тоже совместим, но не во всех опциональных фичах
Nikita
Nikita
такая же if-лесенка
🐙 Antony
Студии у меня нет :)
Если кто запостит по аналогии багрепорты - будет круто
Vladislav
🐙 Antony
Оу, на godbolt есть MSVC 2017 О_О
Nikita
🐙 Antony
но аккаунта для постенья багов в Студию у меня всё равно нет :(
Andrei
Это еще вопрос, что быстрее. Ифы или табличка.