Size: a a a

2020 March 22

FS

Flower Surgeon in pro.cxx
Хотя, тут до ума надо стандарт доводить, да...
источник

O

Ofee in pro.cxx
Alexander T
Кажется, всё уже украдено до нас, и неоднократно. Если правильно помню, вот один из первых примеров такого лупхола (перевод): https://habr.com/ru/post/268141/
Насколько я понял, там интереснее одна из следующих оригинальных статей, где таки автор пишет настоящий счётчик, спасибо, внимательно прочту чуть позже
источник

GV

Grygorii Vanika in pro.cxx
Antony Polukhin
Народ, нужен фидбек на идею http://apolukhin.github.io/papers/Back%20to%20Throws%20Nothing.html

Буду рад любым коментариям и замечаниям.
Меня смущает аргумент что "noexcept тянет за собой noexcept - и это плохо".
Также можно сказать и про отсутствие noexcept на ф-и.
Если писать exception-safe код - приходится думать о каждой не-noexcept ф-и - "отсутствие noexcept - тянет за собой отсутствие noexcept".
Это усложняет как и написание кода, так и его понимание.
Например, если string_view c-tor не noexcept, нужно ли писать такой код ?

auto user_function1(std::vector<char>& v) {

       modify_state(v);
       try
       {
           return std::string_view(&v.back(), 1);
       }
       catch (...)
       {
           rollback_state();
           throw;
       }
   }


Также, часть in-house библиотек вообще билдится с выключенными исключениями - любое нарушение контракта/исключение приводит к крешу; такие библиотеки - уже не standard-conforming.
источник

ПК

Побитый Кирпич in pro.cxx
Grygorii Vanika
Меня смущает аргумент что "noexcept тянет за собой noexcept - и это плохо".
Также можно сказать и про отсутствие noexcept на ф-и.
Если писать exception-safe код - приходится думать о каждой не-noexcept ф-и - "отсутствие noexcept - тянет за собой отсутствие noexcept".
Это усложняет как и написание кода, так и его понимание.
Например, если string_view c-tor не noexcept, нужно ли писать такой код ?

auto user_function1(std::vector<char>& v) {

       modify_state(v);
       try
       {
           return std::string_view(&v.back(), 1);
       }
       catch (...)
       {
           rollback_state();
           throw;
       }
   }


Также, часть in-house библиотек вообще билдится с выключенными исключениями - любое нарушение контракта/исключение приводит к крешу; такие библиотеки - уже не standard-conforming.
Согласен, отсутствие noexcept напрягает, особенно в деструкторах. На это как минимум будут спамить анализаторы
источник

AT

Alexander T in pro.cxx
Ofee
Насколько я понял, там интереснее одна из следующих оригинальных статей, где таки автор пишет настоящий счётчик, спасибо, внимательно прочту чуть позже
Там действительно в оригинале серия с детальным разбором техники. Вообще, интересна история, первое ли это вообще упоминание лупхолов, и/или они были открыты независимо примерно в одно время.
источник

O

Ofee in pro.cxx
Alexander T
Там действительно в оригинале серия с детальным разбором техники. Вообще, интересна история, первое ли это вообще упоминание лупхолов, и/или они были открыты независимо примерно в одно время.
Вообще, я эксперименты начал уже после того, как кратко пролистал оригинал статьи, но на основе информации из неё, счётчик завести не удалось – компиляторы крайне агрессивно кешируют инстанцирования шаблонов и всё ломалось в самых неожиданных местах.

Так что мне захотелось продолжить и попробовать создать рабочий счётчик для C++17, а получилось и 11. Но да, до последней статьи я тогда не дошёл, решение из неё мне кажется лаконичнее, и нужно будет детально его разобрать и сравнивать.

Пока что лимит нашего счётчика ограничен числом шаблонных параметров, каждый из которых зависит от предыдущих и мне это пока не нравится
источник

AP

Antony Polukhin in pro.cxx
Grygorii Vanika
Меня смущает аргумент что "noexcept тянет за собой noexcept - и это плохо".
Также можно сказать и про отсутствие noexcept на ф-и.
Если писать exception-safe код - приходится думать о каждой не-noexcept ф-и - "отсутствие noexcept - тянет за собой отсутствие noexcept".
Это усложняет как и написание кода, так и его понимание.
Например, если string_view c-tor не noexcept, нужно ли писать такой код ?

auto user_function1(std::vector<char>& v) {

       modify_state(v);
       try
       {
           return std::string_view(&v.back(), 1);
       }
       catch (...)
       {
           rollback_state();
           throw;
       }
   }


Также, часть in-house библиотек вообще билдится с выключенными исключениями - любое нарушение контракта/исключение приводит к крешу; такие библиотеки - уже не standard-conforming.
Лучше писать такое через RAII и не заморачиваться с явным продумыванием noexcept.

Выключаяя исключения вы выходите за пределы стандарта C++. Сейчас идёт работа по стандартизации подобного поведения, но не понятно чем всё закончится.

А вообще - спасибо! Добавлю ваши мысли в документ. Как парировать аргумент "не noexcept влечёт не coexcept" - не знаю
источник

A

ARCHANGEL in pro.cxx
Коллеги, что-то затык с достаточно простой задачей. Хочу без винапи (с winapi понятно как) реализовать отображение в консоли процента загрузки данных.

const auto percents = (success.load() + failed.load()) * 100 / total;
std::cout << "%i[2K\r" << "Downloading... " << percents << " %" << std::flush;

при отображении в консоли вижу это вот так:

Downloading... 100 %i[2K

Как сделать без непечатаемых символов?
источник

AK

Anton Kashcheev in pro.cxx
ARCHANGEL
Коллеги, что-то затык с достаточно простой задачей. Хочу без винапи (с winapi понятно как) реализовать отображение в консоли процента загрузки данных.

const auto percents = (success.load() + failed.load()) * 100 / total;
std::cout << "%i[2K\r" << "Downloading... " << percents << " %" << std::flush;

при отображении в консоли вижу это вот так:

Downloading... 100 %i[2K

Как сделать без непечатаемых символов?
источник
2020 March 23

BS

Bruno Sheider in pro.cxx
Добрый день Может ли кто-то скинуть учебник по c++ для начинающего. Буду признателен (посоветовать)  просто их очень большое количество а какой именно выбрать не знаю.  чтобы был понятным и хорошим
источник

A

ARCHANGEL in pro.cxx
ARCHANGEL
Коллеги, что-то затык с достаточно простой задачей. Хочу без винапи (с winapi понятно как) реализовать отображение в консоли процента загрузки данных.

const auto percents = (success.load() + failed.load()) * 100 / total;
std::cout << "%i[2K\r" << "Downloading... " << percents << " %" << std::flush;

при отображении в консоли вижу это вот так:

Downloading... 100 %i[2K

Как сделать без непечатаемых символов?
Кому интересно, хватило такой модификации:

const auto percents = (success.load() + failed.load()) * 100 / total;
std::cout << "\rDownloading... " << percents << " %" << std::flush;
источник

Aliaksei Қауіпсіздік сертификаты in pro.cxx
Bruno Sheider
Добрый день Может ли кто-то скинуть учебник по c++ для начинающего. Буду признателен (посоветовать)  просто их очень большое количество а какой именно выбрать не знаю.  чтобы был понятным и хорошим
https://www.coursera.org/specializations/c-plus-plus-modern-development если нет желания или возможности купить - просто смотреть видео
источник

ᅠᅠ

ᅠ ᅠ in pro.cxx
кто-нибудь здесь знает повреждение памяти win32?
источник

CD

Constantine Drozdov in pro.cxx
Открываешь крышку, берешь плашку оперативной памяти и ломаешь. Повреждается :(
источник

V🇺

Vladislav 🇺🇸🚜🇷🇺 in pro.cxx
Constantine Drozdov
Открываешь крышку, берешь плашку оперативной памяти и ломаешь. Повреждается :(
а win32?
источник

CD

Constantine Drozdov in pro.cxx
так вот же она
источник

ᅠᅠ

ᅠ ᅠ in pro.cxx
Constantine Drozdov
Открываешь крышку, берешь плашку оперативной памяти и ломаешь. Повреждается :(
Я имею в виду больше как переполнение стека, целочисленное переполнение, и так далее
источник

CD

Constantine Drozdov in pro.cxx
Ничего из этого не повреждает память win32
источник

ᅠᅠ

ᅠ ᅠ in pro.cxx
Constantine Drozdov
Ничего из этого не повреждает память win32
у вас есть пример целочисленного переполнения в msvs c ++?
источник

AT

Alexey Tkachenko in pro.cxx
какая-то дичь бессвязная
источник