The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Утверждён стандарт C++26

30.03.2026 13:16 (MSK)

Комитет ISO по стандартизации языка C++ утвердил финальный вариант спецификации, образующей международный стандарт "C++26". Представленные в спецификации возможности частично уже поддерживаются в компиляторах GCC, Clang и Microsoft Visual C++. Поддерживающие C++26 стандартные библиотеки реализованы в рамках проекта Boost.

В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO/IEC 14882:2026.

Основные особенности C++26:

  • Реализованы элементы контрактного программирования (Contracts), позволяющие определять формальные спецификации интерфейсов при помощи трёх новых операторов: pre (предусловие), post (постусловие) и contract_assert (проверка утверждения). Оператор "pre" определяет предварительные условия, которые должны быть выполнены перед вызовом (проверка входных данных); "post" - условия, которые должны соблюдаться после выполнения (требования к выходным данным); contract_assert - условия возникновения исключений. Возможность появится в GCC 16.
    
       int f(const int x)
          pre (x != 1) // требования ко входным данным
          post (r : r == x && r != 2) // требования к результату; r - значение с результатом
       {
          contract_assert (x != 3);
          return x;
       }
    
  • Добавлена поддержка рефлексии (Reflection), позволяющей отслеживать и модифицировать элементы программы на стадии компиляции. Добавлены новые операторы "^^" для получения метаинформации о грамматической конструкции и "[:…:]" для выполнения обратного преобразования. Для преобразования и обработки полученной в ходе инспектирования информации предложена библиотека std::meta и доступны такие возможности, как вычисления с константами. Поддержка рефлексии будет добавлена в GCC 16.
    
       constexpr int i = 42, j = 42;
    
       constexpr std::meta::info r = ^^i, s = ^^i;
       static_assert(r == r && r == s);
    
       static_assert(^^i != ^^j);  // 'i' и 'j' имеют различные значения.
       static_assert(constant_of(^^i) == constant_of(^^j));    // 'i' и 'j'  одинаковы
       static_assert(^^i != std::meta::reflect_constant(42));  // отличается от значения 42
    
  • Добавлен оператор "template for" для перебора элементов, таких как пакеты параметров, похожие на кортежи объекты и результаты рефлексии (метаобъекты), на этапе компиляции в стиле обычного цикла. При выполнении "template for" тело цикла раскрывается для каждого элемента и каждая итерация обрабатывается в отдельной области видимости, в которой меняющаяся в цикле переменная является константой. В контексте рефлексии "template for" может применяться для обхода свойств классов или перечислений. Возможность появится в GCC 16.
    
       void f() {
         template for (constexpr int I : std::array{1, 2, 3}) {
           static_assert(I < 4);
         }
       }
    
    будет раскрыто в:
    	
       void f() {
       {
           constexpr auto&& __range = std::array{1, 2, 3};
           constexpr auto __begin = __range.begin();
           constexpr auto __expansion-size = __range.end() - __begin; // 3
    
           {
             constexpr int I = *(__begin + 0);
             static_assert(I < 4);
           }
    
           {
             constexpr int I = *(__begin + 1);
             static_assert(I < 4);
           }
    
           {
             constexpr int I = *(__begin + 2);
             static_assert(I < 4);
           }
         }
       }
    
  • Добавлен фреймворк std::execution для асинхронного и параллельного выполнения кода. Предоставляются объекты scheduler, определяющий планировщик выполнения работ (поток, пул потоков, GPU, event loop), sender, определяющий выполняемую работу, и receiver - обработчик результата.
    
       using namespace std::execution;
       scheduler auto sch = thread_pool.scheduler();
       sender auto begin = schedule(sch);
       sender auto hi = then(begin, []{
          std::cout < "Hello world! Have an int.";
          return 13;
       }); 
    
       sender auto add_42 = then(hi, [](int arg) { return arg + 42; });
    
       auto [i] = this_thread::sync_wait(add_42).value();
    
  • Добавлена библиотека std::simd для распараллеливания выполнения операций над данными при помощи наборов инструкций SIMD, таких как AVX-512 и NEON, с использованием стандартной системы типов C++.
    
        std::simd<float> a = {1.0f, 2.0f, 3.0f, 4.0f};
        std::simd<float> b = {5.0f, 6.0f, 7.0f, 8.0f};
    
        std::simd result = a + b;
    
  • Предложена реализация вектора (массива) переменного размера std::inplace_vector, размещаемого в стеке, размер которого определяется на этапе компиляции. API близок к std::vector, но элементы массива хранятся не в "куче", а внутри объекта.
    
       inplace_vector a(10);
       inplace_vector b(std::move(a));
       assert(a.size() == 10); 
    
  • Добавлена директива "#embed", предназначенная для встраивания в код бинарных ресурсов.
    
       const unsigned char icon_display_data[] = {
           #embed "art.png"
       };
    
  • Добавлена поддержка генерации и обработки исключений на этапе компиляции при ошибках в контексте constexpr.
    
       constexpr std::optional<unsigned> checked_divide(unsigned n, unsigned d) {
    	try {
    		return divide(n, d);
    	} catch (...) {
    		return std::nullopt;
    	}
       }
    
       constexpr date parse_date(std::string_view input) {
    	auto [correct, year, month, day] = ctre::match<"([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})">(input);
    	
    	if (!correct) {
    		throw incorrect_date{input};
    	}
    	
    	return build_date(year, month, day);
       }
    
  • Реализована структура данных std::hive для неупорядоченного хранения данных и обеспечения повторного использования памяти, освободившейся после удалённых элементов. Структура оптимизирована для нагрузок с высокой интенсивностью добавления и удаления элементов в произвольном порядке. В отличие от массивов, удаление элемента в std::hive не вызывает сдвига других элементов, а приводит к пометке удалённого элемента пустым с последующим заполнением освободившейся позиции при добавлении нового элемента.
  • Добавлена библиотека std::linalg c API для линейной алгебры, основанный на BLAS.
  • Добавлена поддержка механизма синхронизации Hazard pointer, позволяющего без выставления блокировок предотвратить освобождение памяти объектов, с которыми продолжается работа в других потоках. При удалении объекта, он лишь помечается удалённым, но занимаемая объектом память освобождается только когда все потоки снимут hazard-указатель, выставляемый во время работы с объектом.
  • Добавлена поддержка механизма синхронизации RCU (Read-Copy Update) - при операциях записи создаётся новый экземпляр объекта, а операции чтения не блокируются, а продолжают работать со старым экземпляром. После завершения изменения новый экземпляр становится активным и новые операции чтения уже производятся с ним, а старый экземпляр удаляется после завершения читающих его потоков.
  • Внесены изменения для усиления безопасности стандартной библиотеки, такие как проверки допустимых значений и выхода за границы буфера. Например, при доступе к элементу "constexpr reference operator[](size_type idx) const;" добавляется проверка условия "idx < size()".
  • Предоставлена возможность использования ключевого слова "constexpr" с разновидностью оператора "new" (placement new) для размещения объекта в заранее выделенной памяти во время компиляции.
  • Добавлена поддержка структурированных привязок (structured binding) в контексте "constexpr", т.е. ссылки на константные выражения теперь сами могут быть константными выражениями. Поддержка реализована для массивов и простых структур.
    
       constexpr int arr[] = {1, 2};
       constexpr auto [x, y] = arr; 
    
  • В структурированные привязки добавлена возможность использования синтаксиса "..." для указания пакетов (pack), захватывающих оставшееся число элементов из присваиваемой последовательности.
    
       auto [x,y,z] = f();       // в переменные  x, y, z будут записаны  три элемента, возвращённые f().
       auto [...xs] = f();       // в пакет xs будут записаны все элементы, возвращённые f().
       auto [x, ...rest] = f();  // В x будет записан первый элемент, а в rest - остальные.
       auto [x, y, ...rest] = f(); // В x будет записан первый элемент, в y - второй, а в rest - третий.
       auto [x, ...rest, z] = f();  // в x - первый, в rest - второй, в z - третий.
    
  • Добавлена поддержка "тривиальной перемещаемости" типов (Trivial Relocatability), позволяющей оптимизировать перемещения объектов заданного типа через их клонирование в памяти без вызова конструкторов или деструкторов. Для классов реализованы свойства memberwise_trivially_relocatable и memberwise_replaceable, а для низкоуровневого перемещения одного или нескольких объектов добавлены функции trivially_relocate_at и trivially_relocate.
  • Реализована поддержка прикрепления функции main() к глобальному модулю и определения функции main() в именованных модулях.
  • Добавлен вариативный оператор "friend" ("friend Ts...").
  • Реализованы атрибуты для структурированных привязок;
  • Добавлен синтаксис '= delete("причина")'.
  • В базовый набор символов включены "@", "$" и "`".
  • Предоставлена возможность применения структурированного связывания (structured binding) в качестве условия в операторах if и switch.
  • Добавлена возможность использования сразу нескольких переменных-заполнителей с именем "_" в одной области видимости, например, теперь являются корректными конструкции:
    
        struct S {
          int _, _; 
        };
        void func() {
          int _, _;
        }
        void other() {
          int _; // ранее выводилось предупреждение в режиме -Wunused
        }
    
  • Предоставлена возможность использования строковых литералов в контексте, в котором они не используются для инициализации массива символов и не попадают в результирующий код, а применяются только во время компиляции для диагностических сообщений и препроцессинга, например, в качестве параметров директив и атрибутов _Pragma, asm, extern, static_assert, [[deprecated]] и [[nodiscard]].
  • Добавлены встроенные функции: "__builtin_is_within_lifetime" для проверки активности альтернативы в объединениях (union) и "__builtin_is_virtual_base_of" для проверки является ли базовый класс виртуальным.
  • Реализованы тривиальные бесконечные циклы без неопределенного поведения.
  • Обеспечен вывод ошибки при удалении указателя на неполный тип.
  • Объявлен устаревшим синтаксис определения вариативных параметров с многоточием без предшествующей запятой (например, когда указывается "void e(int...)" вместо "void e(int, ...)").
  • Запрещено использование макросов для объявления модулей.
  • Переведено в разряд устаревших выполнение неявных преобразований перечисляемых значений в арифметических вычислениях.
    
       int main() {
          enum E1 { e };
          enum E2 { f };
          bool b = e <= 3.7; // устарело
          int k = f - e; // устарело
          int x = +f - e; // OK
       }
    
  • Прекращена поддержка прямого сравнения массивов.
    
       int arr1[5]; 
       int arr2[5]; 
       bool same = arr1 == arr2;
    
  • Объявлен устаревшим шаблонный класс is_trivial.

  1. Главная ссылка к новости (https://herbsutter.com/2026/03...)
  2. OpenNews: Утверждён стандарт C++20
  3. OpenNews: Бьёрн Страуструп призвал стандартизировать профили C++ для безопасной работы с памятью
  4. OpenNews: Fil-C - компилятор для языков C и C++, гарантирующий безопасную работу с памятью
  5. OpenNews: C++ Alliance продвигает в C++ механизмы безопасной работы с памятью, опробованные в Rust
  6. OpenNews: Утверждён стандарт C++17
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65102-cpp
Ключевые слова: cpp, gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (178) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:02, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Экзекуторы добавили!!! Класс!!
     
     
  • 2.135, Аноним (135), 18:13, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Типа так:
    - UB
    - UB
    - UB
    - Pure Random.
    - UB.
    - UB
     

  • 1.2, mos87 (ok), 14:10, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что там по БЕЗО работы с памятью?
     
     
  • 2.166, Аноним (166), 19:56, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Давно уже безо, если использовать умные указатели
     

  • 1.3, Аноним (-), 14:10, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Представленные в спецификации возможности частично уже поддерживаются в компиляторах GCC, Clang и Microsoft Visual C++.

    И что характерно НИ ОДИН из компиляторов не поддерживает стандарт полностью!

    library features так вообще - поддерживаемых почти сколько же сколько не поддерживаемых.

    Простите, а это компилятор чего?
    Точно С++26, а не какого-то сабсета недоязыка?

     
     
  • 2.10, Bottle (?), 14:20, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А всё благодаря великолепным правилам из разряда "А на этой платформе можно точность другую у интов взять", "Мы будем игнорировать существование #pragma once, гнутых расширений и кланговских, давайте вместо этого ещё что-нибудь из Boost потырим в стандарт за триста франков", "плевать, что в сишке есть restrict, нам не нужна производительность и совместимость в плюсах".
     
     
  • 3.26, Аноним (-), 14:37, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да, то что "можно точность другую у интов взять" это еще ладно.
    Если бы в стандарте были только "implementation-defined" с конечным списком вариантов, то было бы ок.

    А вот то, что каждый компилятор может выкинуть какие-то фичи, это вообще бред.
    Если оставить только 2-3 core language features, это всё еще С++? А если оставить одну?))
    Оно ж называется CORE language features, как их можно не реализовывать?

    > "плевать, что в сишке есть restrict, нам не нужна производительность и совместимость в плюсах".

    СИшка это такой же кусок kalʼа)
    Там точно так же не обязаны реализовывать стандарт полностью.

     
     
  • 4.28, oficsu (ok), 14:46, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Оно ж называется CORE language features, как их можно не реализовывать?

    Core language feature означает вовсе не то, о чём вы подумали. Это лишь способ назвать категорию фич, которые (как правило) нереализуемы библиотечно. Те, которые непосредственно про языковую семантику, а не про надстройки, доступные пользователю

     
  • 2.15, Аноним (15), 14:27, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/intel/llvm?tab=readme-ov-file#oneapi-dpc-compiler
     
  • 2.17, oficsu (ok), 14:27, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Стандарт всегда выходит раньше, чем его поддерживают реализации. Потому что прежде чем делать компилятор, нужно сначала всем собраться вместе и договориться, что делать и как именно. И эту роль как раз и выполняет стандартизация
     
     
  • 3.32, Аноним (32), 15:01, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Стандарт всегда выходит раньше, чем его поддерживают реализации.

    Это понятно. Плюс на имплементацию нужно время.
    Но не понятно почему gcc и шланг не поддерживют фичи не то что с++23, а даже с++20.
    Да и более старые тоже.

    GCC не поддерживает
    "Omitting/extending memory allocations" из C++14 core
    [[carries_dependency]] из C++11 core
    Что-то вроде есть, но partial.

    Шланг - аналогично, но другие штуки.
    en.cppreference.com/w/cpp/compiler_support.html

    Времени не хватило? С 2011 года))
    Или "стандарт" такой что на него можно класть болтяру, даже на core?

     
     
  • 4.54, oficsu (ok), 15:40, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Этот пропозал уточняет вординг стандарта и не обязывает компиляторы менять что-л... большой текст свёрнут, показать
     
     
  • 5.138, Аноним (135), 18:17, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Этот пропозал уточняет вординг стандарта и не обязывает компиляторы менять что-либо. Он расширяет свободу компиляторов, а не сужает. Так что данный пропозал не "не поддерживается", а попросту неприменим к GCC. Именно поэтому там N/A

    Хорош стандарт. А потом мы удивляемся, что что-то только шлангом собирается, чему-то GCC подавай, а третье вообще только в MSVC.

     

  • 1.4, Аноним (4), 14:11, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +23 +/
    > Добавлены новые операторы "^^" для получения метаинформации о грамматической конструкции и "[:…:]"

    И вот после этого кто-то будет называть раст не читаемым....

     
     
  • 2.13, Аноним (13), 14:26, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Относитесь к этому как к бреду. Я так уже давно делаю.
     
     
  • 3.39, Аноним (39), 15:12, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я тоже отношусь к расту как к бреду
     
  • 2.65, Аноним (65), 16:23, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Эти конструкции для очень продвинутого/глубокого метапрограммирования. Для написания библиотек уровня Boost или Qt. Наверное, в 90% случаев встречаться не будут. А в этом вашем Раст поток подобных символов в обычных прикладных программах.
     
     
  • 3.102, Витюшка (?), 17:19, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Наконец-то C++сники начали что-то подозревать об их уровне программирования
     
  • 3.147, Скотобаза (?), 18:51, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В qt уже есть ненапряжный introspection. Зачем вот эта гадость ещё сверху? Если и так работает
     
     
  • 4.198, Александр (??), 22:31, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что в Qt он на костылях собран на основе дополнительного препроцессинга (т.н. MOC компилятор). Эта фича в стандарте позволит выбросить на мороз этот самый препроцессинг (или по крайней мере большую его часть)
     
  • 2.91, НовыеРептилоиды (?), 17:01, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а чё тебе баян не нравится?
     
     
  • 3.116, Аноним (116), 17:30, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, и смайлик умиления ^^ над ним.
     

  • 1.5, Аноним (5), 14:12, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Вот теперь точно пора ливать из C++. Непонятно как все это удерживать в голове и при этом решать задачу предметной области. Поскорее бы zig до ума довели, ибо zig + go хватит всем.
     
     
  • 2.9, Ананоним (?), 14:20, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Просто поинтересуйся на каком стандарте пишут компилятор сами разработчики новых компиляторов. По секрету для тебя: на очень старом, а нововведения всё для тебя, дорогой. Чтобы ты боролся с надуманными проблемами, а не использовал простой язык, на котором всё можно было писать вполне успешно и эффективно ещё 20 лет назад.
     
     
  • 3.14, Аноним (5), 14:26, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >поинтересуйся на каком стандарте пишут компилятор

    Это уже не мои проблемы

     
  • 3.30, Сладкая булочка (?), 14:55, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Просто поинтересуйся на каком стандарте пишут компилятор сами разработчики новых компиляторов.

    llvm на 17.

    > ещё 20 лет назад.

    Да, с арифметикой у экспертов туго. Не удивительно, что они что-то бормочат про невозможность сложить два знаковы инта в си.

     
     
  • 4.93, Аноним (93), 17:03, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если Вы знаток: В чем разница реализации (применяемых инструкций) вычислений double и long double на x64?
     
     
  • 5.207, Аноним (93), 23:00, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Так как ник "сладкая булочка" не смог ответить, хотя заявлял себя знатоком, то отвечу сам. На x64 вычисления с ним обычно выполняются через SSE2 инструкции (регистры XMM), а long double - через FPU стек.
     
  • 4.185, Аноним (185), 21:30, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    LLVM - это не компилятор C++. А компиляторы пишут на C++11.
     
     
  • 5.190, Сладкая булочка (?), 21:53, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > LLVM - это не компилятор C++. А компиляторы пишут на C++11.

    https://github.com/llvm/llvm-project/blob/0b500d54467821813027e4a503b4581cca8b

     
  • 3.31, Аноним (32), 14:55, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > По секрету для тебя: на очень старом, а нововведения всё для тебя, дорогой.

    Вранье же!

    LLVM subprojects are primarily written using C++17
    И уже мигрируют на с++20
    discourse.llvm.org/t/rfc-raise-the-minimum-compiler-requirements-to-move-toward-c-20/88894

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

     
  • 3.69, kravich (ok), 16:33, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Наконец-то хоть кто-то это нормально сформулировал
    Секрет успешного использования C++ - в самоограничениях
     
     
  • 4.123, nonstop (?), 17:38, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    воистину
     
  • 2.21, Аноним (21), 14:30, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На то и расчитано что разрабы разбегутся.
     
  • 2.45, Аноним (45), 15:22, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Большую часть из этого вам *обычно* будет не нужна. Но *в некоторых* ситуациях это может очень даже пригодиться. Так что расслабьтесь, не надо - не пользуйтесь и не забивайте голову.
     
  • 2.59, funny.falcon (?), 16:05, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Товарищ именно на таком стэке и остановился.
     

  • 1.6, Bottle (?), 14:13, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    По классике жанра: а что там с модулями?
    Что-нибудь продвинулось? Судя по табличке с cppreference.com воз и ныне там.
     
     
  • 2.27, Аноним (27), 14:44, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Модули же приняли ещё в C++20.
     
     
  • 3.33, адын2 (?), 15:01, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    именно
     
  • 2.44, anon5989517240 (?), 15:18, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще они уже работают в достаточной мере чтобы на них переезжать

    https://www.youtube.com/watch?v=fZrDG_he9sE

     
     
  • 3.48, Аноним (45), 15:25, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну да, но костылии для их поддержки добавляют до сих пор. В т.ч. и в C++26.

    > * Запрещено использование макросов для объявления модулей.

    Одно из самых спорных нововведений C++ за всё время.

     
  • 2.156, Аноним (156), 19:16, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >По классике жанра: а что там с модулями?

    Ты чо Паскалист что-ли? Зачем тебе модули?

     
  • 2.186, Аноним (185), 21:33, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Модули в C++ - пятое колесо к телеге.
     

  • 1.7, Аноним (-), 14:16, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > static_assert(^^i != ^^j);
    > static_assert(^^i != std::meta::reflect_constant(42));

    Хахаха, а потом они будут кричать "в вашам хрусте нечитаемые синтаксис! там много взяких закорючек"))

     
  • 1.8, Аноним (8), 14:18, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Может кто-то что-то понимает в современных C++, а я уже нет.
     
     
  • 2.12, Аноним (13), 14:25, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Достаточно Страуструпа (последнее издание). Остальное от лукавого.
     
     
  • 3.88, Аноним (93), 17:00, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А кто узнает чем компилиравали? или Нужный исходник не компилируется в классике.
     
  • 2.46, Аноним (15), 15:24, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://intel.github.io/llvm/
     
  • 2.187, Аноним (185), 21:37, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ни один человек не знает C++ полностью. История с PL/1 индустрию программирования ничему не научила.
     

  • 1.11, Ананоним (?), 14:24, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь здесь знает, появились ли уже трансляторы так называемых современных версий C++ в, например, C++03?
     
  • 1.22, Аноним (22), 14:33, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Внесены изменения для усиления безопасности стандартной библиотеки, такие как проверки допустимых значений и выхода за границы буфера. Например, при доступе к элементу "constexpr reference operator[](size_type idx) const;" добавляется проверка условия "idx < size()".

    Дамы и господа, свершилось!

     
     
  • 2.25, Аноним (21), 14:36, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А зачем оно в стандартной библиотеке? Тебе нужно и проверяй.
     
     
  • 3.35, anon5989517240 (?), 15:02, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Затем что баги с границами контейнеров возникают систематически, а если включить... большой текст свёрнут, показать
     
  • 2.129, Аноним (129), 17:50, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> Внесены изменения для усиления безопасности стандартной библиотеки, такие как проверки допустимых значений и выхода за границы буфера.
    > Дамы и господа, свершилось!

    Свершилось оно как всегда: через задницу. Потому что включается оно сугубо через флаг компилятора для всего translation unit-а (а может и вовсе сугубо для всего бинаря - хз, не вникал).

    Додуматься добавить директивы типа pragma для включения/выключения этих проверок для конкретных кусков кода - это для комитетных дидов чересчур неподъемная задача. Может, они осилять это где-то к C++40, и плюсы в этом плане наконец-то догонят Турбо Паскаль конца 80х.

     

  • 1.23, Аноним (23), 14:33, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ну весь D уже перетянули к себе? Что ж, было бы неплохо, если бы плюсы каким-то уже перегруженными не были.
     
     
  • 2.152, Аноним (8), 19:03, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Может быть D и неплох. Но к сожалению или к счастью он скорее мертв, чем жив, и вспоминать о нем уже как-то неловко.
     

  • 1.24, Аноним (24), 14:34, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Жаль, что не завезли profiles, которые предлагал Строуструп.
     
     
  • 2.37, anon5989517240 (?), 15:07, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, обидно прям. Вроде как перенесли на с++ 29
     

  • 1.29, Аноним (27), 14:53, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Добавлена поддержка рефлексии (Reflection), позволяющей отслеживать и модифицировать элементы программы на стадии компиляции.
    > Добавлен оператор "template for" для перебора элементов, таких как пакеты параметров, похожие на кортежи объекты и результаты рефлексии (метаобъекты), на этапе компиляции в стиле обычного цикла.

    Теперь-то достаточно языковых средств, чтобы разработчики Qt могли ими заменить свой Meta-Object Compiler (moc) ?

     
     
  • 2.38, anon5989517240 (?), 15:10, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле не факт - смотря как они решат реализовывать.

    В рамках текущей рефлексии работает интроспекция только для структур данных и функций, но она например пока не позволяет достаточно гибко генерировать код методов (насколько я понимаю) так что если Qt и начнет перетаскивать moc туда то или не весь, или будут ждать с++29 😒

     
     
  • 3.200, Александр (??), 22:39, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А в любом случае им 29-й ждать. Просто так сложилось, что норм поддержка фичей в компилях пояаляется +/- к следующему стандарту
     
  • 2.55, Аноним (45), 15:44, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Теперь-то достаточно языковых средств, чтобы разработчики Qt могли ими заменить свой Meta-Object Compiler (moc) ?

    https://www.qt.io/blog/c26-reflection-qrangemodel

    > The obvious question is then if and how we plan to use C++26 reflections to replace moc. I have not done a feature-by-feature comparison between the meta object data we need to generate, and what we can get out of std::meta; but it seems that we can make the C++ compiler do much of the work that moc does. The biggest challenge might be the signals: and slots: member function blocks; we might have to annotate every function separately.

     
     
  • 3.133, Аноним (133), 18:07, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это что, они прям догоняют скоро Дельфи 90-х годов?!
     

  • 1.36, iPony128052 (?), 15:05, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > Добавлена поддержка рефлексии (Reflection)

    Даже не верится... Сколько лет ждал.

     
     
  • 2.63, Аноним (93), 16:15, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –7 +/
    и что хорошего в самоизменении программы? Купил одно, а через год оно превратилось в кирпич (а то и нечто похуже).
     
     
  • 3.83, anon5989517240 (?), 16:57, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    строго говоря самомодификация программы к рефлексии не имеет отношения.

    Помимо этого вся рефлексия by design живет на compile-time и в рантайм протекает только при отдельном большом желании

     
     
  • 4.127, Аноним (93), 17:43, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Просто я смотрю с другой стороны жизни программ. Как легко трескаются .NET программы, например.
     
  • 4.170, Аноним (93), 20:21, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Открываем инструмент и видим продакшен:
    firefox.TargetCreateThread - 55                    - push ebp
    firefox.IsSandboxedProcess - 55                    - push ebp
    ...
    Это не рефлексия?
     
  • 3.180, Аноним (180), 21:20, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Пройтись по всему списку библиотек в директории и найти те, которые похоже на то что нужно, путём проверки наличия требуемых объектов. И выбрать ту, что наиболее подходит.

    Да... Ошибки в таком искать - очень сложно. А уж дыр в безопасности.....

    Зато пользователя не напрягать. Сам проверил, всё до чего смог дотянуться. Грохнулся - пометил, что плохая. Не грохнулся - работаем дальше.

     
  • 2.153, Аноним (153), 19:12, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ждём порт serde на плюсы!
     
     
  • 3.162, Сладкая булочка (?), 19:41, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/simdjson/simdjson/pull/2282
    https://www.youtube.com/watch?v=Mcgk3CxHYMs
     
  • 3.201, Александр (??), 22:41, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    И нормальных ORM)
     

  • 1.40, Аноним (40), 15:12, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Реализованы тривиальные бесконечные циклы
    > без неопределенного поведения.

    Ахаха! Ну надо же!
    Оказывается могут когда хотят))
    Всего лишь 40 лет понадобилось.

     
     
  • 2.64, Аноним (93), 16:18, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Разве трудно самому реализовать отсутствие неопределенности из-за цикла?
     

  • 1.43, Христианин (?), 15:17, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Во имя ОтцаиСынаиСвятагоДуха.
    Скажите: а смысл в таких новшествах ?
    Раньше вместо пре - был конструктор
    вместо пост - деструктор
    Но я давно не в теме.
     
     
  • 2.47, anon5989517240 (?), 15:25, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Конструктор и деструктор можно только к объекту применить,
    а эти проверки можно к аргументам отдельных функций привязывать - эт в других кейсах нужно.

    Плюс там можно гибко вырезать из компиляции эти проверки если надо.

     
     
  • 3.50, Христианин (?), 15:35, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    СпасиБог что не прошли мимо.
    Я это понимаю, но неужели нельзя предусмотреть в объявлении класса ?
    Для каких целей нужен новый инструмент
    Разрешение использования _ - действительно полезная вещь
     
     
  • 4.51, Христианин (?), 15:37, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    вернее в реализации класса ?
    Давно отстал от темы.
    Сдавал плюсы в начале нулевых на хорошо -4.
    Ныне в Белоруссии 10балльная система оценок.
    учителям больше чем пятибальная нравится
     
     
  • 5.60, Аноним (93), 16:06, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >больше чем пятибальная нравится

    Дольше за оценку можно торговаться.

     
  • 2.52, Аноним (45), 15:37, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вы путаете конструкторы/деструкторы (которые про инициализацию и освобождение ресурсов) и пре/постусловия (которые про состояние программы в данный момент времени).
     
     
  • 3.62, Аноним (62), 16:09, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Чем этот синтаксический сахар лучше обычных древнейших ассертов и статикассертов?
     
     
  • 4.125, oficsu (ok), 17:40, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Контракты имеют единый гибкий стандартизированный механизм обработки нарушений, в отличие от ассертов. И ассерты нельзя привязать к результату функции. Ну и предусловия — это способ выразить интерфейс функции. Ассерт внутри тела функции не является таким интерфейсом
     
  • 4.126, Аноним (45), 17:43, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тем, что видны на стороне вызывающего функцию, а значит могут быть оптимизированы с учетом вызывающего кода. Кроме того, поведение контрактов настраивается.
     
  • 4.188, Аноним (185), 21:50, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    assertion - это не часть логики программы, они только для отлова ошибок при отладке. А предусловие, постусловие, инварианты - это часть логики.
     
     
  • 5.210, Ананоним (?), 23:12, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > assertion - это не часть логики программы, они только для отлова ошибок
    > при отладке. А предусловие, постусловие, инварианты - это часть логики.

    Кто мешал эту логику по старинке в теле функции писать?

     
  • 4.206, Аноним (206), 22:56, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это чтобы сделать очередной "язык АДА" ;)
    Там тоже всякая "безопасность работы с памятью" (как и много чего ещё) на контрактах основана. Но применение потенциально может быть шире. "Мьютекс должен быть разблокирован при выходе из функции (и при вызове функции)" - иначе получаем compile error.

    Что реально удалось реализовать - будем посмотреть... Возможно просто получим очередной UB и невнятный warning, отключённый в дефолте (как с exception и прочим).

     

  • 1.58, Аноним (58), 16:03, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Теперь компилироваться будет ещё дольше.
     
     
  • 2.80, anon5989517240 (?), 16:54, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Наоборот - рефлексия компилится в разы быстрее шаблонов и значительно более читаемая по сравнению с ними
     
     
  • 3.142, Аноним (58), 18:37, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И переносит работу на время исполнения, замедляя приложение.
     
     
  • 4.167, Аноним (133), 20:10, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Она по определению работает с данными, которые будут известны только в рантайме. Например, загрузить гуй-форму из внешнего ресурсного файла и рефлекснуть её на программные классы.
     
     
  • 5.208, Аноним (93), 23:08, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нет не это. Это предусмотренная структура, которую заполняет загрузчик действительными адресами в рантайме.
     
     
  • 6.209, Аноним (93), 23:09, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Важное уточнение - самой программы, а не динамической библиотеки.
     

  • 1.66, Аноним (66), 16:31, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Поддерживающие C++26 стандартные библиотеки реализованы в рамках проекта Boost.

    Сам неплю-сист. А разве у си плю-плюсников не шаблоны и классы? Библиотеки же у чистого Си?

     
     
  • 2.71, Аноним (71), 16:35, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. Это вообще ортогональные вещи.
     
  • 2.77, Аноним (65), 16:48, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Библиотеки могут быть: функций, классов, шаблонов.
     
  • 2.189, Аноним (185), 21:53, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Здесь говорится про стандартный фреймворк языка.
     

  • 1.68, Аноним (68), 16:33, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлена директива "#embed", предназначенная для встраивания в код бинарных ресурсов.

    наконец-то хоть что-то полезное!

     
     
  • 2.76, Ананоним (?), 16:46, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Добавлена директива "#embed", предназначенная для встраивания в код бинарных ресурсов.
    > наконец-то хоть что-то полезное!

    Полезное? Очень сомнительно. Для чего тащить в язык то, чему место в linker-е? И о, внезапно, это давно реализовано там. Но редактор связей это немодно, старо и немолодёжно, надо любую гадость тащить в язык, потому что в других недоязыках такое есть. Хехе, верной дорогой идёте....

     

  • 1.73, Фанат (?), 16:37, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хорошо потрудились, с каждым стандартом код получается лаконичнее и понятнее.
     
     
  • 2.82, Аноним83 (?), 16:55, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да вот только язык превращается из "английского" в "китайский" - вместо выражения мыслей с помощью набора букв нужно помнить все 100500 иероглифов.
     
     
  • 3.87, Аноним (87), 16:59, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > вместо выражения мыслей с помощью набора букв нужно помнить все 100500 иероглифов

    Skill issues.
    Для apl вообще отдельная клавиатура/раскладка нужна была.
    Зато писали на нем реально умные люди, а не случайный сброд, почитавший "С++ за 21 день"

     
     
  • 4.134, Аноним83 (?), 18:11, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Так а толку то с таких умников?
    Софта условно надо 10005000 на планету, а умников всего 1050 и они дорогие, да ещё и умирают в самый неподходящий момент.
     
     
  • 5.143, Аноним (143), 18:38, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Так а толку то с таких умников?

    Толку от них больше чем от сотен 6ыdloкодеров.

    > Софта условно надо 10005000 на планету, а умников всего 1050 и они
    > дорогие, да ещё и умирают в самый неподходящий момент.

    Ой, да не гори ты так.
    Никто не заставляет пользоваться новыми штуками. Ну не осилил и не осилил.
    Можно продолжать писать как привык в стиле "си с классами".


     
     
  • 6.178, Аноним83 (?), 21:11, 30/03/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.165, Сладкая булочка (?), 19:56, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Зато писали на нем реально умные люди, а не случайный сброд, почитавший "С++ за 21 день"

    Это странное заявление. Почему яп должен быть супермегасложным? Он наоборот должен быть логичным, легко осваиваемым, компилятор должен в этом помогать.

     
  • 3.96, Фанат (?), 17:10, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да ладно.
    template< class ...Args > requires ( sizeof...(Args) == ValuesCount ) interpolation_by_hermit(Args&&... args) : m_Values{static_cast<numeric>(args)...} {}
    Вполне доступно и понятно. Раньше с ума съедешь пока размотаешь переменное число параметров в шаблоне.
     
     
  • 4.114, Ананоним (?), 17:29, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да ладно.
    > template< class ...Args > requires ( sizeof...(Args) == ValuesCount ) interpolation_by_hermit(Args&&...
    > args) : m_Values{static_cast<numeric>(args)...} {}
    > Вполне доступно и понятно. Раньше с ума съедешь пока размотаешь переменное число
    > параметров в шаблоне.

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

     
     
  • 5.131, Фанат (?), 17:59, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно, плюсы в начале 2000х выглядели эдаким супер макросом. Все знакомые, кто работал с плюсами воспринимали это как неизбежное зло и по возможности уходили на что-то другое. Было написано много кодогенераторов - Qt не дадут соврать :). Поэтому так все исторически медленно развивалось, сейчас ИМХО ругают по старой памяти в основном. После 14 года плюсы стали значительно лучше, не stl, а именно написание своего кода стало более лаконичным и упорядоченным.
     
     
  • 6.179, Аноним83 (?), 21:15, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В начале 2000х выбора особо не было.
    Был вижал бейсик, дельфи и вижал с++.
    Первое тормозило зато кодилось оч легко, второе было золотой серединой, а третье давало самый производительный результат но требовало больше усилий и времени.

    Потом бейсик похоронили и сделали сишарп, которы видимо конкурирует с дельфи, который в итоге и помер.

    Чтобы с с/с++ куда то уходили - не слышал. Те от знакомых не слышал, а так бывали всякие истории от анонимов в сети.

     
     
  • 7.205, Александр (??), 22:52, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вижпл бейсик (если брать классику, а не .Net) не столько тормозной был (всё же мог в натив), сколько топорный. Это было как бы обратной стороной его простоты: играюче оперируешь всякими ActiveX'ами, да COM'ами, за то для того, что по сложнее - страдаешь. Но в целом, он и не был рассчитан на какую-то конкуренцию с C++ или Delphi. Скорее как дополнение для C++ (т.е. такой, своего рода связующий код). В этлм плане конкуренция похоже была даже в режиме VisualBasic + C++ VS Delphi. Можно сказать, разные подходы
     
  • 4.136, Аноним83 (?), 18:13, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А зачем эти шаблоны нужны?
    В моей практике шаблоны понадобились 1-2 раза, когда я написал свой num2str и на входе могли быть разные типы числовые.
    И решилось это через простой define на С.
    Хотя в общем то до того там просто копипаста была и было не хуже.
     
  • 2.86, Христианин (?), 16:59, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    вы ерничаете ? - это сарказм ?
    не все это поймут...
     
  • 2.95, Ананоним (?), 17:09, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Хорошо потрудились, с каждым стандартом код получается лаконичнее и понятнее.

    Ога,Ю особенно со словом auto очень понятнее :D

     
     
  • 3.97, Фанат (?), 17:13, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Именно. Конфетка с с++14 лямбды с auto типами в параметрах.
    Data.OnEnd( []( auto& T ){ T = 123; } );
     
     
  • 4.144, Аноним83 (?), 18:39, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Из серии: как написать сложнее и непонятнее.
     
     
  • 5.176, Фанат (?), 20:51, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    End от пустого массива может быть небезопасно :)
     
  • 2.100, НовыеРептилоиды (?), 17:17, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    а мне нравиться я по другомк писавть и не умею
     
  • 2.191, Аноним (185), 21:54, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Хорошая шутка 😄
     

  • 1.79, Аноним83 (?), 16:53, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А сколько гениев в мире знают все эти тонкости языка и используют их?

    Чото у меня ощущение что в стандарт тянут всё подряд, и работа ради процесса и зарплаты.

     
     
  • 2.89, Ананоним (?), 17:00, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А сколько гениев в мире знают все эти тонкости языка и используют
    > их?
    > Чото у меня ощущение что в стандарт тянут всё подряд, и работа
    > ради процесса и зарплаты.

    Мне кажется они таким методом решили закопать C++, чтобы было правдоподобное оправдание переключения на новомодные языки. Вся эта шумиха очень забавна, особенно если посмотреть в какой  тишине и тени, относительно этого места, люди используют язык Ada, как пример.

     
     
  • 3.137, Аноним83 (?), 18:14, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Мне кажется тащить всякий мусор они начали раньше.
     
  • 2.90, Аноним (90), 17:01, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А сколько гениев в мире знают все эти тонкости языка и используют их?

    Хм... т.е для системного языка тонкости не нужны?
    Может для глупеньких отдельный ЯП сделать, типа ПХП или ЖС.

    > Чото у меня ощущение что в стандарт тянут всё подряд, и работа ради процесса и зарплаты.

    Ощущения это не факты)

     
     
  • 3.106, Ананоним (?), 17:20, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Может для глупеньких отдельный ЯП сделать, типа ПХП или ЖС.

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

     
     
  • 4.107, Аноним (93), 17:22, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Проблемы реализации и непротиворечивости кучи мусора на стороне поддержки компиляторами.
     
     
  • 5.140, Аноним83 (?), 18:30, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Так а пользоватся то этим кто будет?
    Тащить в язык/стандарт/компиляторы всякое что юзает полтора автора на планете в 3 закрытых проектах - это перебор.

    Вот в новости они втащили SIMD.
    Это же просто капец: с одной стороны и без этого давно инстрикты есть, с другой их сильно больше чем то что втащили. С третьей это всегда выделяется во чтото отдельное и плохо переносимое, и есть либы облегчающие процесс.
    Какие то обёртки ради обёрток к общем получаются.

     
  • 3.139, Аноним83 (?), 18:26, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Системного!?

    Операционные системы на крестах не пишут, ничего лучше обычного С+асм нет.

    Для глупеньких - го сделали.
    Пхп делали для простоты в вебне, жс делали как максимально переносимый вместе с виртуальной машиной, по сути это абстракция от ОС и железа.


    > Ощущения это не факты)

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

    А проектов где суперлиба с кучей своего синтаксиса поверх языка накрученного - я насмотрелся, да и сам подобное делал, и поддерживал чужое.
    Как для либы/проекта такое ещё норм, а как для стандарта/языка - сильно сужает мышление и повышает порог входа.

     
     
  • 4.145, Аноним (145), 18:40, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А на чем написана самая распространенная дестопная ОС в мире На С естественно... большой текст свёрнут, показать
     
     
  • 5.148, Аноним83 (?), 18:52, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А на чем написана самая распространенная дестопная ОС в мире?

    На С она написана. То что там куча юзерспейсных приложух и либ написана на крестах, шарпе и ещё хз чём - как бы не важно.
    Кресты в ядро начали пихать уже сильно потом, где то с висты, с соотвествующим качеством :)

    Компилятор - не системное.


    > Вот чтобы такого парада велосипедов не было - нужно удачные вещи переносить в стандарт.

    Превратить язык в синтаксис при одной мегалибе - лол.

     
     
  • 6.157, Аноним (157), 19:32, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> А на чем написана самая распространенная дестопная ОС в мире?
    > На С она написана. То что там куча юзерспейсных приложух и либ написана на крестах, шарпе и ещё хз чём - как бы не важно.

    Ну вообще-то важно. Эти либы и есть часть ОС (именно ОС, а не только лишь ее ядрышка, которым является твой Линукс), и потому чисто по определению являются примером системного кода.

     
     
  • 7.181, Аноним83 (?), 21:20, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Только чисто формально.
    Операционная система в основном без крестов, именно то что в ядре. Юзерспейс конечно часть ОС но часто опциональная.
    В линухе/бсд я бы системным с юзерспейса назвал libc и ещё немного штуковин, а всякие там системные утили - ну это такое - этого можно и самому легко накодить, используя сисколы/винапи и оно будет ничем не хуже.
     
  • 6.168, Аноним (157), 20:11, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Компилятор - не системное.

    Да? А ты чем код компилируешь-то в процессе того самого системного программирования? И чем компилируется сама, блждад, система?

     
     
  • 7.182, Аноним83 (?), 21:21, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Компилятор к операционной системе отношения не имеет и для её функционирования не нужен.
    Собирать можно и руками, если хватает упоротости :)
     
     
  • 8.197, Аноним (157), 22:23, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да Как и язык, из которого были скомпилированы ее бинари Только хз, при чем... текст свёрнут, показать
     
  • 4.161, Аноним (157), 19:38, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Операционные системы на крестах не пишут, ничего лучше обычного С+асм нет.

    Жаль только, что твои "С + асм" системы приходится собирать комилятором, написанным на крестах. 😭

    > ничего лучше обычного С+асм нет.
    > Для глупеньких - го сделали.

    Хвалить С и одновременно говорить, что Go для глупеньких - это феерическое обделывание собственных штанов. 🤣

     
     
  • 5.183, Аноним83 (?), 21:22, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Го так авторы позиционировали - причём тут я?

    Компиляторы С есть сильно разные, в том числе и те которые без крестов написаны и которые используются для бутстрапа крестовых.

     

  • 1.81, Аноним (93), 16:54, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Добавлена директива "#embed", предназначенная для встраивания в код бинарных ресурсов.

    Дорогу блобам

     
  • 1.85, Аноним (85), 16:58, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Опять начали ныть в комментариях; всё им не так и не эдак. Вас никто не заставляет учить все эти заклинания. Зато если какие-то из них вам понадобятся в будущем, - спасибо скажете;) А до тех пор, - не надо заморачиваться.
     
     
  • 2.92, Ананоним (?), 17:01, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Опять начали ныть в комментариях; всё им не так и не эдак.
    > Вас никто не заставляет учить все эти заклинания. Зато если какие-то
    > из них вам понадобятся в будущем, - спасибо скажете;) А до
    > тех пор, - не надо заморачиваться.

    Ты наверно не читатель кода, а только пейсатель. Это объясняет твои шумы в лужу.

     
     
  • 3.104, Аноним (85), 17:19, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Не вижу проблем. Что мешает заранее договориться о том какие фичи языка будут использоваться в проекте, а какие нет? Тогда с чтением проблем не возникнет!

    Если ваш мозг чувствует что этот язык не для вас, - используйте другой, - это нормально, не надо насиловать свой мозг! Однако это не значит, что сам язык плохой.

    Например, мой мозг не хочет воспринимать Lisp, или например Zig, - это же не значит что языки плохие. У кого-то будет наоборот. Говорю же, не надо заморачиваться, не нравится, - не пользуйтесь; найдите то что вам подходит лучше всего и приносит удовольствие.

     
     
  • 4.108, Ананоним (?), 17:23, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Не вижу проблем. Что мешает заранее договориться о том какие фичи языка
    > будут использоваться в проекте, а какие нет? Тогда с чтением проблем
    > не возникнет!

    Ога! Осталось только договориться со всеми программистами мира, чтобы не читать потом этот "код", в поисках жучков в открытых проектах.

     
     
  • 5.118, Аноним (85), 17:32, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    У каждого проекта вполне могут быть свои критерии к тому в каком стиле писать и какие фичи языка использовать. Не вижу никаких проблем. Захотели присоединиться к проекту?, - будьте любезны изучить стиль в котором надо писать. Если не нравится стиль,? - найдите другой проект. Не нашли подходящий, создайте свой и озвучьте свои требования по написанию кода.
     
  • 3.159, Сладкая булочка (?), 19:36, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> Опять начали ныть в комментариях; всё им не так и не эдак.
    >> Вас никто не заставляет учить все эти заклинания. Зато если какие-то
    >> из них вам понадобятся в будущем, - спасибо скажете;) А до
    >> тех пор, - не надо заморачиваться.
    > Ты наверно не читатель кода, а только пейсатель. Это объясняет твои шумы
    > в лужу.

    В чем он не прав? Зависит от проекта. Полно открытого кода, где много чего не используется. Например, откройте google/re2 и покажите где там какое-то не понятное заклинание?

     

  • 1.113, Аноним (113), 17:29, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Добавлена библиотека std::simd для распараллеливания выполнения операций над данными при помощи наборов инструкций SIMD,

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

     
  • 1.115, Tita_M (ok), 17:29, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    "C++ is an insult to the human brain" Niklaus Wirth.
    Не знаю высказывался ли Никлаус Вирт о Rust, но я уверен, что он от него в восторге точно не был.
    Я считаю, что подобные языки оставляют очень сильные патологические следы в структурах мозга программирующих на них.
     
     
  • 2.164, Сладкая булочка (?), 19:49, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Сам Вирт в итоге сдался и добавил в Оберон gc.
     
     
  • 3.192, Аноним (185), 22:05, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Сборка мусора не причём. Речь шла о ненадёжности языка.
     
     
  • 4.204, Сладкая булочка (?), 22:49, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Сборка мусора не причём. Речь шла о ненадёжности языка.

    Дык у Вирта в паскале также был ub при null dereference, type puning в union, чтение не инициализированных переменных и др.

     

  • 1.117, Аноним (113), 17:31, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Добавлена директива "#embed", предназначенная для встраивания в код бинарных ресурсов.

    #embed "/etc/shadow"

    и пришлите нам крэш-дамп, пожалуйста.

     
  • 1.119, Аноним (113), 17:33, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Реализована структура данных std::hive для неупорядоченного хранения данных

    Рулез.

     
  • 1.120, Аноним (120), 17:33, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    вместо того чтобы упрощать язык они его усложняют. подработка на пенсии вот что все эти стандарты за последние лет 20.

    один int x[n] для сишечки чего стоит. наркоманы чертовы.
    auto чтобы все запутать. убогие треды хотя есть libpthread.
    двадцать блин лет и куча левого мусора который только все усложняет, а не упрощает

     
     
  • 2.124, Аноним (113), 17:40, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >двадцать блин лет и куча левого мусора который только все усложняет, а не упрощает

    как язык назовёшь - тех он и притягивает ;)

     
  • 2.169, Аноним (157), 20:20, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > auto чтобы все запутать

    Да, мне вот очень надо при работе с текстом видеть на каждой строке "const std::string&", а то вдруг забуду и запутаюсь! 😱

    > убогие треды хотя есть libpthread.

    А в чем заключается убогость? Ты же понимаешь, что ни один плюсовик не будет в здравом уме сношаться с сишочным libpthread чтобы получитьна ровном месте лишь гемор ручного управления ресурсами?

     
  • 2.193, Аноним (185), 22:07, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Есть такой бизнес - стандарты выпускать (и продавать).
     

  • 1.121, Аноним (121), 17:35, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А сколько страниц на PDF занимает текст стандарта?
     
  • 1.122, Аноним (113), 17:37, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И ещё. std::ranges::* - тормознутее <algorithm> и кода вручную. Во всех компиляторах. В GCC, разумеется, намного тормознее, чем в шланге. std::iota такая же быстрая, как и ручной цикл. Но все маппинги-редукции тормозят жутко, на порядки, да, при -O3 и -flto. Stay away.
     
  • 1.128, LaunchWiskey (ok), 17:47, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Астанавитесь! C++ 11 уже был перебором, до него всё необходимое, что нужно грамотному программисту, в языке уже имелось.
     
     
  • 2.130, Ананоним (?), 17:56, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Астанавитесь!

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

     
  • 2.132, Фанат (?), 18:02, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да ладно! constexpr, consteval что неудобны ? а лямбды с auto параметрами ?
     
     
  • 3.141, Аноним (157), 18:32, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> С++ 11 уже был перебором, до него всё необходимое, что нужно грамотному программисту, в языке уже имелось.
    > constexpr, consteval что неудобны ? а лямбды с auto параметрами ?

    Это все для неграмотных. 😤 Особенно мув-сесантика с умными указателями: грамотные ручками с ресурсами сношаются через new/delete!

     
  • 2.175, Аноним (85), 20:50, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вы часом не из секты Столярова будете? Ну да ладно, дело ваше;)
     

  • 1.146, Аноним (157), 18:42, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Господи, к какому стандарту они наконец-то разродятся функциями кодировки UTF?

    Причем маразм в том, что они как бы и так требуются для filesystem::path и существуют под его капотом, но вот чтобы явно и отдельно их добавить в библиотеку - шишь вам!

     
     
  • 2.150, Аноним (150), 18:58, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Когда-то был std::filesystem::u8path(). Видимо, что-то не пошло у ребят с UTF8. НУ НЕ ШМОГЛА Я
     
  • 2.151, Аноним (150), 18:59, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё есть прикол, заключается в том, если вдруг понадобится итерироваться по символам в UTF-8 строке, тебе придётся переводить её в std::wstring с помощью функций codecvt или использовать сторонние решения. Конвертация строк между кодировками - это как минимум лишние аллокации, как максимум костыльно
     
  • 2.160, Аноним (160), 19:37, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Что? Этого до сих пор нет?! Какой колхоз...
     

  • 1.154, mumu (ok), 19:14, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    ^^"[:…:]"^^
     
     
  • 2.158, Ананоним (?), 19:34, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > ^^"[:…:]"^^

    Именно.

     
  • 2.163, Аноним (133), 19:48, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    =[:^^:]=
     
  • 2.172, Аноним (157), 20:25, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > ^^"[:…:]"^^

    👉😐👈

     
  • 2.177, Аноним (133), 20:58, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > ^^"[:…:]"^^

    =[:o^^o:]=

     
  • 2.194, Аноним (185), 22:11, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Лапша на ушах
     
  • 2.211, Аноним (93), 23:13, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Авторы очень старались для Вас. Рады, что понравилось народу. )
     

  • 1.173, Аноним (157), 20:32, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > s = ^^i;

    Вьетнамские Delphi-флешбэки, двойная порция.

    > [:…:]

    😐

     
     
  • 2.184, Сладкая булочка (?), 21:22, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Вьетнамские Delphi-флешбэки

    Ну, у делфи стандарта зато нет

     
     
  • 3.195, Аноним (185), 22:13, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это преимущество?
     
     
  • 4.202, Сладкая булочка (?), 22:45, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Это преимущество?

    Стандарт? Конечно. Делфи - implementation defined.

     

  • 1.196, Аноним (196), 22:14, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как же всё таки хорошо, что начиная с C++11 комитет пришёл в форму и стал выпускать каждые 3 года стандарты с действительно значимыми новшествами. Язык становится выразительнее, при этом, совместимость со старым кодом почти никогда не ломается.

    После C++26 не грех и Qt 7 было бы выпустить, без стороннего meta-object-compiler.

     
     
  • 2.203, Сладкая булочка (?), 22:46, 30/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Как же всё таки хорошо, что начиная с C++11 комитет пришёл в
    > форму и стал выпускать каждые 3 года стандарты с действительно значимыми
    > новшествами. Язык становится выразительнее, при этом, совместимость со старым кодом почти
    > никогда не ломается.
    > После C++26 не грех и Qt 7 было бы выпустить, без стороннего
    > meta-object-compiler.

    Что не так с moc в текущем виде? Ну работает он в сборке и работает.

     

  • 1.199, Андрей (??), 22:32, 30/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Со временем любой язык становится Perl'ом
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру