Berkus
с очередями у меня не очень хорошо еще с советских времён /shrug
Anton
Спасибо, буду думать. Пока вариант с сисколами вроде справляется, задел на будущее смотрю
Square
https://t.me/ProCxx/8
Square
извините. ностальгирую
Square
а если чтение/запись не последовательна?
для этой очереди без разницы
Igor
https://developercommunity.visualstudio.com/content/problem/136448/after-vs-update-the-linker-performs-full-links-all.html - классный баг в MSVC. Если AdditionalIncludeDirectories содержат пути с "/" вместо "\", то инкрементальная линковка не срабатывает. Текущий статус: Closed - Not a Bug
Evgenii
foo is an unsigned short. Is the expression foo + foo signed or unsigned? signed – 11 👍👍👍👍👍👍👍 50% implementation defined – 6 👍👍👍👍 27% unsigned – 5 👍👍👍 23% 👥 22 people voted so far.
Alexey
https://ideone.com/gqPI1k stdout: i
Evgenii
https://ideone.com/gqPI1k stdout: i
отлично, один вариант исключили
Evgenii
😉
Max
А почему тогда https://ideone.com/JospV2 ?
Alexey
отвечает александр друзь! я бы тоже послушал...
Evgenii
ответ есть, но я пока послушаю
Stanislav
А почему тогда https://ideone.com/JospV2 ?
а зачем делать s.c_str() для коута? о_О какое то бесмысленное и беспощадное действо
Max
ответ есть, но я пока послушаю
Суммируя uint8_t или uint16_t получаем int, а для uint32_t или uint64_t получаем unsigned...
Igor
https://avva.livejournal.com/3090909.html - исходная голосовалка по этому вопросу с обсуждением
Billy
а вот вопрос такой. имеется большой проект. скажет около 7000 файлов. Там есть тесты на бусте; один suite один файл. Но штука в том, что там иногда бывают оказии, когда нарушается one definition rule. Как избежать ?
Billy
оно и линкуется и иногда даже работает.
Billy
но чаще всего оно ведет себя как портовая куртизанка
Billy
one definition rule нарушается только для boost fixtures
Anonymous
ответ есть, но я пока послушаю
по моему, всё что меньше int всегда преобразуется при арифметических операциях в int как минимум, то есть ответ 1
Anonymous
возможно, это зависит от размера int на конкретной архитектуре
Anonymous
если sizeof(int) > sizeof(unsigned short) то int в результате
Anonymous
и снова верно лишь наполовину
Ех, вот бы strong types в C++... Да вот только объем сломанного кода перевалит за все возможные границы.
Billy
не нарушать их
Так да. очевидно. Но я попытался понять, почему это, оказалось, что просто размер такой, что уже хер знает, какие там есть suite, а какие нет, а fixture всегда называют class Fixture и привет
Anonymous
Ех, вот бы strong types в C++... Да вот только объем сломанного кода перевалит за все возможные границы.
Арифметику над интами только одного типа. Больнее, но безопаснее. Просто совсем не прикольно, когда поведение языка настолько неочевидно.
🐙 Antony
Запихните все Fixture в анонимный неймспейс
Evgenii
🐙 Antony
Это еще что, вот вам свежачок из C++17: const char* s = "12345678901234"; std::vector c{s, s+10}; Чему будет равен вектор?
Berkus
эээм, 1234567890?
Berkus
или '1', '2', '3'..
Egor
11?
Anonymous
Anonymous
Anonymous
Последнее "СереброЗолото" , почему не просто Серебро?
Oleg
потмоу что break нет
🐙 Antony
11?
неа
Anonymous
а break где
А всё ,Спасибо!А почему в том чате мне запретили картинки отправлять?
Kirill
это же не (), он не итераторы принимает, а иниталайзер лист, первое значение 1, второе 1[10]?
Kirill
s, s[10] точнее
Anatoly
1,11?
char -> char*?
Igor
это же не (), он не итераторы принимает, а иниталайзер лист, первое значение 1, второе 1[10]?
почему тогда std::vector<char> c{ s, s + 10 }; дает ожидаемый результат?
Санжар
Постепенно по мере усложнения с учетом обратной совместимости С++ разрастется так что на сиснтаксис придется жизнь потратить 😆
Kirill
char -> char*?
кстати да, тут теймплейт дедакшен же
Vasily
Только вот MSVC такой вывод шаблонных типов не работает (как в примере Антона), что иногда очень неудобно(
Alexander "SonnySlave"
проще на раст пересесть кек
растишки кто-то перекушал)
Anonymous
И здесь тоже
Kirill
да, авто теймплейт дедакшн дает гемороя :) почему то глаз замыливается и ожилаешь увидеть там <char>
Санжар
Constantine
это же законно? //file.h namespace some { template <typename T> T & read_something(); } template <typename T> inline T& read() { return some::read_something(); } //file1.cpp template <> int & some::read_something<int>() { static int x = 0; return x; } //file2.cpp template <> bool & some::read_something<bool>() { static bool x = 0; return x; }
🐙 Antony
Да
Andrey
нет, кидать код текстом в тг - незаконно
Constantine
Да
То есть можно считать это полностью легальным способом прозрачного развязывания зависимостей между модулями?
🐙 Antony
ага
Constantine
клево)
🐙 Antony
Там одна только проблема - отладка
Constantine
отладка не проблема)
🐙 Antony
С таким способом сообщения об ошибке обычно оказываются на эьапе линковки
Constantine
я просто таким образом хочу глобальными ресурсами управлять
🐙 Antony
И получаются сообщение вида "Unresolved external symbol read_something<очень-многа-букв😠)"
Constantine
ну они понятные, учитывая, что там будет global::read_resource<some_global_resource_interface>