• Ускорение сборки проекта на CMake+GCC: предварительная компиляция заголовочных файлов
    0
    Пройтись по всем cpp и пофиксить ошибки сборки (при том скорее всего большая часть инклудов придёт из парного хэдера, что сократит объём работы). Думаю, за день можно справиться, максимум за три. Сложностей пока не вижу, только время.
  • Ускорение сборки проекта на CMake+GCC: предварительная компиляция заголовочных файлов
    0
    Если так делали специально, то это неправильное использование PCH. PCH не отменяет «самодостаточность» хедеров, просто за ней становится чуть сложнее следить.
  • Микросервисы на С++. Выдумка или реальность?
    +1
    К сожалению, stackfull из буста это дикий набор низкоуровневых хаков, которые, видимо, не все компиляторы даже адекватно обрабатывают.

    Например, пытался юзать в msvc — ловил прикольные эффекты с goto в catch блок без исключения.
    Или цикл while (true) с вызовами async_write/async_read (из буста) выходил после первой итерации — помогала запись bool dummy = true;
    while (dummy).

    Вобщем, все надежды на с++20, верим и ждём. Пока писать асинхронный код действительно тяжело (или по крайней мере неудобно) по сравнению с другими языками.
  • Руководство Google по стилю в C++. Часть 10
    0
    Надо просто читать не по слогам и даже не по словам, а целыми блоками — скорость чтения возрастает. А если делать переносы строк на скобках, то придется мотать экран туда-сюда
  • C++ быстрее и безопаснее Rust, Yandex сделала замеры
    +4
    Этого всегда будет недостаточно. Такие проверки в принципе неразрешимы, придётся банить потенциально корректный код (подход Раста как раз). А те, что разрешимы требуют много ресурсов, что делает их нерентабельными (замедлять компиляцию 99.999% корректного кода ради того чтоб найти ошибку в 0.001% мало кто хочет).
  • Первое впечатление от концептов
    +1
    Указатели на функцию это один из кейсов. Как насчёт статических переменных? В каждой отдельной инстанции у нас создаётся своя переменная. Это поведение отличается от дженериков из с#, например. Такие эффекты недопустимо делать неявно.
  • Первое впечатление от концептов
    0
    Всё просто. Шаблоны имеют свои особые эффекты:
    1) Увеличение ресурсов компиляции
    2) Каждая новая инстанция шаблона это отдельная полноценная сущность (функция или класс). Это приводит например к тому, что адреса двух инстанций одной шаблонной функции неравны.
    3) Следствие из п.2: раздувание бинарника.

    Если вы уберёте все эти эффекты в неявный синтаксис, то огребёте потом отлаживать код (особенно п.2).
  • Линеаризуем асинхронный код с помощью корутин
    0
    Да, если тип будет auto
  • Подробно о корутинах в C++
    0
    Не согласен, вижу тут аналогию с деструкторами и RAII. Вызывая деструктор, вы точно так же говорите объекту освободить ресурсы, но нет гарантий, что объект спроектирован корректно и эти ресурсы освободит. Тем не менее, претензий к этому не возникает, потому что есть RAII — идиома, позволяющая создать такую гарантию. Если класс спроектирован корректно (RAII), то есть гарантия освобождения ресурсов.

    То же самое с потоками. Чтобы мочь останавливать поток, сам поток (его функция) должны быть спроектированы так, чтобы поддерживать остановку. Тогда можно создать гарантию освобождения ресурсов. И не важно, принудительно мы что то завершаем или просим поток. Объект вы тоже принудительно не отчистите.

    Насчёт того, что таких средств нет…
    На самом деле в с++20 для этого даже есть стандартный класс потоков — std::jthread, но впрочем не сложно и свой навелосипедить.
  • Подробно о корутинах в C++
    0
    Даже сейчас вы не можете завершить поток при этом быть уверенным что освободили все ресурсы и остановили все потоки который тот успел породить.

    Я всё могу:


    my_thread.cancel(); // сообщаем потоку что ему пора остановиться.
    my_thread.join(); // дожидаемся пока поток остановится
    
    // В этой точке есть гарантия, что все ресурсы освобождены и дочерние потоки остановлены.
  • C++20 утверждён! Чего ждать и к чему готовиться разработчикам в C++23
    –1

    Фрагментация жёсткого диска

  • Перемещение — прошлый век! Альтернативы std::move в «C++ будущего»
    –1
    Использование после перемещения и сейчас считается дурным тоном.

    Ага, после того как выпил из чашки чай (переместил чай из чашки в желудок), её следует уничтожить.

  • Типобезопасная работа с регистрами без оверхеда на С++17: value-based метапрограммирование
    +1
    К сожалению (или к счастью) параметры consteval функции не являются constant expression. Вот такой вот парадокс. Так что передавать constexpr значения в функцию можно пока только через шаблонные параметры, либо передавать в функцию объекты заглушки, а сами значения получать через decltype(paramN)::value.
  • Что каждый программист на C должен знать об Undefined Behavior. Часть 3/3
    +1
    Почему в принципе есть возможность успешно скомпилировать программу обращающуюся к неинициализированной переменной на чтение хоть с какими-то настройками компилятора?

    Потому что в общем случае это невозможно диагностировать.
    Пример:
    int i;
    if (some_runtime_dependent_condition()) {
        cin >> i;
    }
    if (another_runtime_dependent_condition()) {
      cout << i;
    }
    

    Мы административно гарантируем, что
    another_runtime_dependent_condition()
    равна true только когда
    some_runtime_dependent_condition()
    тоже равна true (это гарантируется, скажем, архитектурой).

    Так что все эти «простые» UB на деле не диагностируемые. А в тех частных случаях, когда UB очевидно, компиляторы действительно пытаются сообщить юзеру. По крайней мере msvc с дефолтными настройками отказывается компилировать, если видит очевидное чтение неинициализированной переменной или выход из функции без return.
  • Баги C++20. Итоги встречи в городе Белфаст
    +1
    В ТГ чате упоминалось, что США выдвинуло замечание на фикс ключевых слов в корутинах (предложение Антона, которое не прошло ранее). Я так понимаю, успехов они не добились?
  • Баги C++20. Итоги встречи в городе Белфаст
    0
    Всё ещё можно переприсваивать.
  • Ликбез по передаче параметров по значению в конструкторы и сеттеры (современный C++, примеры)
    +1
    Такие параметры конструктора приводят к комбинаторному взрыву перегрузок. Самый православный вариант — шаблонный конструктор с forward reference, там тоже нет лишнего мува, но и конструктор всего один.
  • Feature freeze C++20. Coroutines, Modules и прочее
    –1
    -
  • Релиз PVS-Studio 6.26
    +4
    Вы путаете undefined behaviour и unspecified. Последнее как раз должно быть определено компилятором (но не обязательно документировано). А при undefined никто ничего никому не должен. Программа, его содержащая более не считается программой на языке С++. Что и используют разработчики компиляторов для проведения жёстких оптимизаций.
  • Что не так с std::visit в современном C++
    +8
    Не хочется Вас расстраивать, но С++ никогда не был языком со строгой типизацией :). Со статической да, но не строгой.
  • Что не так с std::visit в современном C++
    0
    Но ведь в С++ std::variant (представляющий тип сумму точно также, как std::function представляет функцию) — это как раз объект первого класса…
  • Chain of Responsibility на C++ variadic templates
    +1
    В этом и заключается вся прелесть С++. Он позволяет выражать в коде огромное количество разнообразных моделей. То, что реализация при этом сложно-читаема для неподготовленного зрителя — некритичный недостаток. Да и приведённая здесь шаблонная магия не такая уж и чёрная, есть и покруче приёмы :)
  • Google обвиняют в слежке за пользователями Safari на iPhone
    +1
    Как Google узнаёт всю эту информацию? Или там просто эвристика типа
    «Ну, судя по его поисковым запросам, он гей»?
  • C++ велосипедостроение для профессионалов
    0
    Тем не менее, вероятность конкретных последствий на распространенных платформах с распространенными компиляторами выше остальных. О вероятности уже рассуждать можно.
  • Haskell. Задача о мудрецах и колпаках
    0
    У нас есть предположение, что на первом мудреце не белый колпак (мы должны это опровергнуть). Оба других мудреца видят, что у первого не белый колпак. В то же время, они оба знают, что белый колпак обязательно существует на одном из них. Другими словами, если предложение верно, то можно вычеркнуть первого мудреца из системы, так как его наличие не влияет на результат.

    Если перед вами 100 мудрецов с небелыми колпаками и один с белым, и вы видите, что мудрец с белым колпаком не догадывается что он с белым, то вывод очевиден — вы с белым колпаком тоже.
  • Первый контакт с «var» в Java 10
    0
    auto в C++ намного мощнее, чем в Java и C#. Оно там используется не только для вывода типа локальной переменной, но и для вывода возвращаемого значения из функции, вывода типов аргументов для лямбд.
  • Вредные заклинания в программировании
    +1
    Что такое sizeof(byte)?

    1) sizeof(T) возвращает размер типа T в байтах.
    2) sizeof(char) == 1 всегда, следовательно char и есть байт по размеру.
    3) Платформозависимым является не размер типа char, а количество бит в одном байте (а значит и в одном char-е). За это отвечает константа CHAR_BIT.

    Источник: документация по C++
  • Рефлексия в C++14
    +5
    Это не production код. Это код библиотеки.

    В production будет 2 строчки и Вы автоматически получите (например) возможность сериализации любого POD типа.

    Беспокоиться о читаемости в данном случае не Ваша забота, а забота автора библиотеки, не Вы же ее поддерживаете.
  • Рефлексия в C++14
    +1
    Вы специально открываете статьи по C++, чтобы в очередной раз убедиться в его сложности и сообщить об этом всем окружающим?
  • Восемь возможностей C++17, которые должен применять каждый разработчик
    +4
    Смотря почему Вы не хотите применять эти возможности :)
  • Белая функция или квадратичный косинус «наступает»
    +1
    Там наверное линии не вертикальные, а под маленьким, незаметным углом.
  • Ключевое слово «mutable» в C++
    +2
    Только если у исходного объекта, у которого вызывается метод стоит квалификатор const. Если объект не константный, то его можно будет изменить через const_cast даже внутри const метода.
  • Каррирование и частичное применение на C++14
    +1
    Там угловые скобки идут после recurry. Компилятор интерпретирует это как оператор меньше. Ключевое слово template указывает компилятору, что M это аргумент шаблона, а не операнд сравнения.

    Похожая ситуация возникает, если мы обращаемся к вложенному типу (T::type). Ключевое слово typename помогает компилятору понять, что это тип а не статическое поле.
  • Эволюция кроссплатформенной разработки: плюсы и минусы Xamarin
    +1
    Смотря когда последний раз пробовали. Xamarin стремительно развивается. Инфа старше полугода уже может быть неактуальной.

    И как вам такой плюс: возможность разрабатывать под три платформы нативно, используя один язык и одну IDE (вместо трёх языков и трёх IDE).
    Xamarin.Forms в этом случае просто еще больше улучшает ситуацию и увеличивает количество платформ (правда нативность почти пропадает).
  • Метаклассы в C++
    0
    Если я правильно понимаю, то интерфейсы, описанные в статье и близко не равны настоящим интерфейсам из С#. Ведь интерфейсы как набор из чисто виртуальных методов имеют оверхед времени выполнения, но в С# интерфейсы разруливаются на этапе компиляции.
  • UNIGINE С++ School: бесплатный онлайн-курс для продвинутых
    0
    [-n NNN] взято в квадратные скобки. Это значит «необязательный параметр», который можно не указывать.
    Следовательно возможно два запуска:

    Mytest.exe -n 10 in.txt out.txt
    и
    Mytest.exe in.txt out.txt
  • Хочу отказаться от услуг РосКомНадзора по защите меня от информации (в сети). Как это сделать?
    0
    И в чем же заключается услуга РКН, от которой Вы отказываетесь?
  • Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое
    0
    Сборка полностью внутри IDE, без необходимости использовать CMake или другую стороннюю систему.
  • Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое
    –1
    Здравствуйте, планируется ли добавление нативной системы сборки?
  • Анимированные текстуры в OpenGL
    0
    Если я не ошибаюсь, имеется в виду, что цвет пикселя, выводимого на экран, линейно (а может и билинейно) интерполируется между предыдущим и следующим кадром.
    Интерполяция
    Линейная интерполяция