Skip to content

Instantly share code, notes, and snippets.

put get ls mkdir rm check commit diff log
Rust Листратов Илья Романенко Михаил Соломеин Егор Дмитриевич Хорошавин Евгений Горелый Михаил Манукян Айк
Ocaml
C++ Осетров Фёдор Клементьев Матвей Сергеевич Олигер Никита Афанасьева Анастасия Артеменко Михаил Алашеев Иван Кульдюшева Лия Романова Анастасия Казанцева Анна
Zig Джилавян Рафаэль
Go Вмержено Вмержено Шитов Даниил Эрдман Владимир Вмержено Филиппова Надежда Рябых Альберт Богачева Анна Зинченко Данила
Node.js Сергеев Евгений Самсонов Иван Комиссарова Юлия Павел Ловыгин Унисихин Никита
Bash Саяфаров Денис
Java Стасенко Дмитрий Садуллаев Музаффар Шубников Кирилл
Python Копылов Олег Жукова Дарья Беляков Сергей Константинов Андрей Осташов Денис Струнков Степан Ершов Иван 🫡 Нарджиев Никита Полежаев Игорь
set tw=64
set shiftwidth=4
set tabstop=4
set autoindent
set smartindent
set expandtab
set formatoptions=jcroqlt
" Numpadized split navigation
nmap <silent> <A-C-о> :wincmd h<CR>

C++ spans: {*data,size} or {*b,*e} ?

Once Go has shown us the power of slices, there is no doubt that std::span was a very serious omittance in the original C++. Frankly, good old C codebases used the pointer+length metafor so often, it is difficult to explain why C++ got the construct this late. Probably, its designers considered non-owning pointers too rough or maybe too dangerous? An attempt to introduce a similar concept of std::string_view was clearly a failure and it was deprecated. At last, std::span is very widely recommended.