Size: a a a

2021 March 26

AN

Alexander N in pro.cxx
Vladimir
Проект большой бинарь нет
Ну он много чего умеет конвертить, не только кодировки. И я так понял оно умеет collations с учетом нормальных форм итд
источник

DF

Dollar Føølish in pro.cxx
Vladimir
Проект большой бинарь нет
Насколько небольшой ?
источник

AT

Alexander Tulikov in pro.cxx
Alexander N
Но ICU это жир, оно здоровое капец
Она модульная как в плане библиотек, так и в плане данных, поэтому если тащишь её с собой, то можно подрезать под свой сценарий использования.
источник

IZ

Ilia Zviagin in pro.cxx
Alexander N
Но ICU это жир, оно здоровое капец
Ты поди уже сделал всю поддержку традиционного китайского и японского , и всё уложилось в 4 килобайта...
источник

V

Vladimir in pro.cxx
Dollar Føølish
Насколько небольшой ?
4длл в сумме 32мб
источник

V

Vladimir in pro.cxx
Alexander N
Ну он много чего умеет конвертить, не только кодировки. И я так понял оно умеет collations с учетом нормальных форм итд
Без этого никак. Две Unicode  строки можно сравнивать если они в нормальной форме. Многие пишут свои велосипеды конвертации забывая об этом получаю типа того Zoë != Zoë 😉
источник

П

Пашечка in pro.cxx
Vladimir
Без этого никак. Две Unicode  строки можно сравнивать если они в нормальной форме. Многие пишут свои велосипеды конвертации забывая об этом получаю типа того Zoë != Zoë 😉
А должны ли они быть равны всегда и во всех ситуациях? Вспомнить c и с.
источник

АК

Александр Караев... in pro.cxx
Привет, вопрос по корутинам. Есть простой код:

struct bar { std::unique_ptr<int> value; };

boost::asio::awaitable<void> f(bar by_value) { co_return; }

// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free

Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr. При этом:
1. С той же версией компилятора и флагами сборки на godbolt не воспроизводится :(
2. Если bar сделать локальной переменной, а только потом мувнуть в f - всё будет ок.
3. Воспроизводится и для std::string вместо std::unique_ptr.

Полный пример: https://godbolt.org/z/479YWKjbz
источник

DF

Dollar Føølish in pro.cxx
Мне кажется баг в реализации корутин
источник

DF

Dollar Føølish in pro.cxx
На годболте такая же реализация ?
источник

АК

Александр Караев... in pro.cxx
Александр Караев
Привет, вопрос по корутинам. Есть простой код:

struct bar { std::unique_ptr<int> value; };

boost::asio::awaitable<void> f(bar by_value) { co_return; }

// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free

Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr. При этом:
1. С той же версией компилятора и флагами сборки на godbolt не воспроизводится :(
2. Если bar сделать локальной переменной, а только потом мувнуть в f - всё будет ок.
3. Воспроизводится и для std::string вместо std::unique_ptr.

Полный пример: https://godbolt.org/z/479YWKjbz
При этом код после компиляции очень похож на
bar temp{ .value = std::make_unique<int>(5);
auto result = f(copy_not_move(temp));
// здесь вызывается деструктор temp, который был ранее побитово скопирован (!) в f
источник

АК

Александр Караев... in pro.cxx
Dollar Føølish
На годболте такая же реализация ?
На годболте абсолютно та же версия компилятора - 10.2.0, но воспроизвести я не смог. Не представляю, в чём дело
источник

EP

Egor Pugin in pro.cxx
Александр Караев
Привет, вопрос по корутинам. Есть простой код:

struct bar { std::unique_ptr<int> value; };

boost::asio::awaitable<void> f(bar by_value) { co_return; }

// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free

Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr. При этом:
1. С той же версией компилятора и флагами сборки на godbolt не воспроизводится :(
2. Если bar сделать локальной переменной, а только потом мувнуть в f - всё будет ок.
3. Воспроизводится и для std::string вместо std::unique_ptr.

Полный пример: https://godbolt.org/z/479YWKjbz
на годболте даблфри не покажет во время запуска?
источник

АК

Александр Караев... in pro.cxx
Egor Pugin
на годболте даблфри не покажет во время запуска?
godbolt показывает, что программа отработала корректно
источник

d

disba1ancer in pro.cxx
Александр Караев
Привет, вопрос по корутинам. Есть простой код:

struct bar { std::unique_ptr<int> value; };

boost::asio::awaitable<void> f(bar by_value) { co_return; }

// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free

Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr. При этом:
1. С той же версией компилятора и флагами сборки на godbolt не воспроизводится :(
2. Если bar сделать локальной переменной, а только потом мувнуть в f - всё будет ок.
3. Воспроизводится и для std::string вместо std::unique_ptr.

Полный пример: https://godbolt.org/z/479YWKjbz
А почему у awaitable есть promise_type?
источник

d

disba1ancer in pro.cxx
Александр Караев
Привет, вопрос по корутинам. Есть простой код:

struct bar { std::unique_ptr<int> value; };

boost::asio::awaitable<void> f(bar by_value) { co_return; }

// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free

Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr. При этом:
1. С той же версией компилятора и флагами сборки на godbolt не воспроизводится :(
2. Если bar сделать локальной переменной, а только потом мувнуть в f - всё будет ок.
3. Воспроизводится и для std::string вместо std::unique_ptr.

Полный пример: https://godbolt.org/z/479YWKjbz
А ты пробовал как либо запретить аргументу шаблона у f выводится в ссылку?
источник

АК

Александр Караев... in pro.cxx
disba1ancer
А ты пробовал как либо запретить аргументу шаблона у f выводится в ссылку?
Там нет ссылок. Шаблон можно убрать (сейчас уберу, чтобы не смущал), эффект прежний.
источник

d

disba1ancer in pro.cxx
Александр Караев
Там нет ссылок. Шаблон можно убрать (сейчас уберу, чтобы не смущал), эффект прежний.
Хотя да, обычные правила вывода типа
источник

j

jtag in pro.cxx
Добрый день. Подскажите до скольки считает цикл? Для чего 1 сдвигается влево?  for (uint8_t bit = 0x01; bit; bit <<= 1) {}
источник

d

disba1ancer in pro.cxx
jtag
Добрый день. Подскажите до скольки считает цикл? Для чего 1 сдвигается влево?  for (uint8_t bit = 0x01; bit; bit <<= 1) {}
Какой-то хитрый цикл однобитовой маской, кажется должен отработать 8 раз, а до скольки считает можно и самом додуматься
источник