All streams
Search
Write a publication
Pull to refresh
4
0.2

C++ разработчик

Send message

Упомянутые в статье 68 млрд — это число подстановок из 8-ми по 12. То есть длительности судя по всему вообще не перебирались.
Ну и то, что нот всего 8 меня тоже смущает. Получается, что они только мелодии одной определённой тональности перебирали.

Ох, отличная идея — идентичный код по разным веткам «ифов» распихивать.

Мне в подобном сценарии хватало вот такого кода:


using ReturnType = decltype(impl(input));
constexpr bool returns_void = std::is_void_v<ReturnType>;
const auto ret_expression = [&]() {
      if constexpr (returns_void) {
        impl(input);
        return []() {};
      } else {
        return [ret_val = impl(input)]() { return ret_val; };
      }
    }();

Повторяется только вызов функции с неизвестным типом. Мне кажется, что в тех случаях, когда подобными трюками не обойтись, не получится и стандарт исправить, не ломая обратную совместимость.

Через if constexpr проблема достаточно легко обходится. А как компилятор потенциально должен обрабатывать вызов функции с аргументом типа void мне вообще не совсем понятно (синтаксис type function(void) — легаси из C).

Рад за вас. Тем не менее это не отменяет того факта, что стандарт C++17 был принят уже после релиза gcc 7.

Да, перепутал версии. В проекте с gcc мы с восьмой версии -std=c++17 используем. В другом проекте на семнадцатый стандарт перешли одновременно с переходом на clang и какая это была версия я уже не смогу сходу восстановить (но это был 18-й год).


А у нас они оказались включены по недоразумению (они не поддерживаются в режиме -std=c++17 -pedantic, но поддерживаютс в -std=c++17 без -pedantic) — и это сразу привело к проблемам.

Ваш пример как раз показывает, что проблемы в компиляторах могут проявляться даже без изменения версии стандарта и «явного» использования экспериментальных фич.

А где вы тут увидели «нестандартизованные фичи»? Designated initializers — это часть стандартов C99 и C++20.

Он не был частью какого-либо стандарта C++ на момент выхода clang 9, о проблемах в котором вы пишете.


Проблема не в «переключить флаг». Проблема в том, что как только вы «переключаете флаг» — вы оказываетесь в дивном новом мире без поддержки и каких-либо гарантий.

Я не наблюдал в gcc 7 и 8 с флагом -std=c++17 бòльших проблем, чем при использовании «стабильно» поддерживаемых стандартов. А больше всего неожиданного поведения, несовместимого со стандартом я наблюдал на msvc независимо от используемых флагов.

На минутку, я не предлагал использовать ещё не стандартизованные фичи. Только удивлялся, как проект может отказываться от полезной фичи только из-за того, что поддержка стандарта, в который она входит, носит статус экспериментальной (как C++17 в gcc версий 6-8).


Но в целом я понял идею, что в очень больших и долго живущих проектах процессы могут быть сложными и медленными и даже просто обновить компилятор и переключить флаг может быть достаточно проблематично, чтобы откладывать это до последнего момента.

В том-то и дело, что я не вижу разницы. Может быть в каких-то компаниях по каким-то причинам к формальному статусу поддержки стандарта компилятором относятся очень серьёзно, но я не понимаю, какие это могут быть причины. У нас фичи из нового стандарта обычно начинают внедряться до того, как вендор основного компилятора заявляет его полную поддержку.

А что мешает и без такого термина вендорам заявлять экспериментальную поддержку C++23, а потом (возможно через несколько лет), ломая ABI, объявить поддержку полной?
Вроде бы так уже делают, и существенной разницы с Вашим подходом я не вижу.

Да, наверное Вы правы, я ничем из продуктов Nokia не пользовался, слежу только начиная с Sailfish/Mer.
Знаю только что MeeGo позиционировался как замена Symbian.

Я многое точно не знаю, но примерная история такая:
Nokia начали развивать следующее поколение Symbian под именем MeeGo -> Под давлением Microsoft разработку свернули -> Сообщество создало форк Mer -> Выходцы из Nokia основали Jolla, взяли под крыло Mer, на его базе сделали Sailfish, для обхода патентов UI создали заново.
Параллельно сообществом развивается полностью свободный дистрибутив Mer под названием NemoMobile.

Ну удалось воспроизвести.


Выравнивание по левому верхнему углу


По центру

Тут как раз в основном сторонние компоненты со свободными лицензиями, а не разработки Apple, насколько я понимаю.

https://www.cups.org


CUPS is the standards-based, open source printing system developed by Apple Inc. for macOS® and other UNIX®-like operating systems.

Red Hat всё-таки один из ключевых контрибьютеров в линукс и основной разработчик кучи линуксового софта (открытого).

Предлагаете отличать u от v по тому, насколько острый кончик у строчной буквы?

Серьёзно? У них же совершенно разная форма, у u линии вертикальные, а у v сильно наклонные.


uv

Information

Rating
2,466-th
Location
Кипр
Date of birth
Registered
Activity