![]() |
Błąd krytyczny: Nieznany wiersz 0 Zużycie pamięci 134 217 728 bajtów (próba przydzielenia 262 144 bajtów) |
C++REAL – formalna nazwa proponowanego standardu języka C++ inspirowanego językami takimi jak C REAL, Rust, Go, PHP REAL, COBOL oraz asembler 6502. Oryginalnie zaproponowany przez big B w odpowiedzi na rosnące problemy z adopcją C++20 i nowszych. Standard miał był oryginalnie zatwierdzony na spotkaniu WG21 w ptaszarni, ale komitet był zbyt zajęty grindowaniem specjalnego eventu w Blue Archive[1]. C++REAL w założeniu ma być bardziej męski niż inne edycje C++, i zachęcić do siebie najbardziej męskich programistów, przejmując niszę C REAL, Rust oraz PHP REAL, jednak aktualna audiencja składa się głównie z posiadaczy długich skarpet. Actualny szkic to N2136.
Nowe funkcjonalności
C++REAL dodaje więcej nowych funkcji niż wszystkie pozostałe standardy C++ razem wzięte, w związku z czym nie da się wymienić ich wszystkich. Obiektywnie najistotniejsze nowe zmiany to:
- prawdziwe moduły
- kompilator nie może reklamować wsparcia C++REAL, jeśli nie wspiera modułów w co najmniej 20% lub wywala ICE częściej niż co dwadzieścia sekund
- nowe słowo kluczowe
re_summon
, które przywołuje dany obiekt do świata żywych, oraz odwrotne mure_return
- zmienne globalne muszą być prefiksowane nowym słowem kluczowym
constglobal
;constglobal
ma 2d20 szans na implikowanieconst
- jeśli plik nie jest zapisany w UTF-8 LE bez BOM, zachowanie programu jest niezdefiniowane
- jeśli deklaracja funkcji nie ma argumentów, można do niej teraz dać dowolne argumenty (dla kompatybilności z C)
- gdy argumentów jest kilka, ich kolejność jest losowana po każdym uruchomieniu
- nowe słowo kluczowe
😭
używalne przy deklaracji zmiennej; kompresuje ją w pamięci algorytmem bzip2 - dodano
this
do wyrażeń lambda; wskazuje na losowy fragment w pamięci
Zmiany w bibliotece standardowej nie były tak rozległe jak oryginalnie planowano z powodu obaw o kompatybilność wsteczną ze starymi ABI, co mogłoby mieć fatalne skutki dla systemów ekstensywnie używających dwójkowych ochłapów sprzed trzydziestu lat, a chciałyby przejść na REAL (ang. get REAL)
- dodano
std::real
reprezentujący liczbę stałoprzecinkową; położenie przecinka zależy od implementacji - usunięto
std::unique_ptr
(ponieważ nie mieści się w rejestrze) istd::shared_ptr
; prawdziwi programiści piszą na nagich wskaźnikach - dodano
std::c4string
, który enkoduje ciąg znaków w postaci instrukcji montażu ładunków wybuchowych- dodano także
cccc""
dostd::literals
- dodano także
- dodano
std::bjarne
, użycie którego tworzy na pulpicie wirtualnego asystenta krytykującego twój kod C++ - dodano nowe koncepty oraz powiązane checkery:
std::pettan
std::is_pettan
std::sex_scenable
std::has_sex_scene
- dodano
std::flush_water
- dodano
std::bogo_sort
- boost jest teraz oficjalnie częścią biblioteki standardowej, dostępny w przestrzeni
std::experimental::officialboost
- dodano bibliotekę do łamania AES, dostępną w module
std.koyuki
Promocje
Nowi programiści oraz programiści przechodzący na C++REAL otrzymają 1200 darmowych piroksenów.