Size: a a a

2021 February 15

s

std::slavik in pro.cxx
в наше время нельзя уже быть уверенным что процессор команды исполнит те которые в ассемблере видишь)
источник

s

std::slavik in pro.cxx
про встраивание кода уже моветон думать - скорей всего то что в реальности происходить будет благодаря усилиям умного компилятора и процессора будет тяжело программисту предсказать
источник

s

std::slavik in pro.cxx
сейчас смысл inline вкратце - разрешение ODR
источник

АВ

Александр Водянников... in pro.cxx
Shack Ira
Почему регулярка \d+\s* ест одну цифру с пробелом, а дальше если есть цифры и пробелы то не ест?
В цикле надо
источник

AR

Alexandr Rudalev in pro.cxx
И чего же такого нового про инлайн функции появилось? Окромя изначальной рекомендации встраивания + костылей как не получить по башке от линкера?
источник

s

std::slavik in pro.cxx
Alexandr Rudalev
И чего же такого нового про инлайн функции появилось? Окромя изначальной рекомендации встраивания + костылей как не получить по башке от линкера?
источник

s

std::slavik in pro.cxx
в основном нужен в хедерах
источник

s

std::slavik in pro.cxx
и то - это опасные мувы
источник

AR

Alexandr Rudalev in pro.cxx
std::slavik
сейчас смысл inline вкратце - разрешение ODR
Ну как то притянули кота за уши.
1. ODR - это также и про Foo foo, extern Foo foo.
2. Костыли линковки инлайн функции не решаю задачу полносью, ибо возможны UB (при разном объявлении в разных единицах трансляции).
3. Зачем упор на хедеры? Да, с инлайн проще делать header only библиотеки, но пункт 2 это не решает.
4. static inline вообще никак не относится к ODR (из-за этого и лучше оптимизируются).
источник

АР

Андрей Руссков... in pro.cxx
std::slavik
сейчас смысл inline вкратце - разрешение ODR
inline лишь меняет требование с "one definition" на "same definition"
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
Ну как то притянули кота за уши.
1. ODR - это также и про Foo foo, extern Foo foo.
2. Костыли линковки инлайн функции не решаю задачу полносью, ибо возможны UB (при разном объявлении в разных единицах трансляции).
3. Зачем упор на хедеры? Да, с инлайн проще делать header only библиотеки, но пункт 2 это не решает.
4. static inline вообще никак не относится к ODR (из-за этого и лучше оптимизируются).
inline в языке это именно "другая ветка в ODR". Идея в том, чтобы перестать считать это как "встраивание кода".
источник

IZ

Ilia Zviagin in pro.cxx
magras
А вот порядок в котором будут лежать поля bit field'а на сколько я помню implementation defined.
#zivtop
источник

IZ

Ilia Zviagin in pro.cxx
Shack Ira
Почему регулярка \d+\s* ест одну цифру с пробелом, а дальше если есть цифры и пробелы то не ест?
/warn кросспостинг
источник

G

Group Butler [beta] in pro.cxx
Shack Ira has been warned (1/3)
источник

D

Dmitriy in pro.cxx
Нарвался я на крайне любопытный warning в MSVC:
warning C4722: mpmc_queue<int, aligned_paged_allocator>::~mpmc_queue<int,aligned_paged_allocator>: деструктор не возвращает ресурсы, возможна утечка памяти
Код деструктора (lockfree-очередь):
Ty dummy{};
   for (;;) {
     if (!unsynchronized_pop_impl<false>(dummy)) {
       break;
     }
   }
   destroy_node(node_pointer{m_head});

Параметр шаблона false означает "не копировать данные в output перед запихиванием узла во freelist"
Что не нравится компилятору?
источник

D

Dmitriy in pro.cxx
Warning пропадает, если убрать Ty dummy🤔
источник

ПК

Побитый Кирпич... in pro.cxx
Dmitriy
Warning пропадает, если убрать Ty dummy🤔
Что такое Ty?
источник

D

Dmitriy in pro.cxx
Побитый Кирпич
Что такое Ty?
Любой тип, удовлетворяющий требованиям trivially_copyable & trivially_destructible
источник

ПК

Побитый Кирпич... in pro.cxx
Dmitriy
Любой тип, удовлетворяющий требованиям trivially_copyable & trivially_destructible
Не, конкретно в случае варнинга
источник

D

Dmitriy in pro.cxx
То, что хранит очередь
источник