Standard Vocabulary for Algorithms

This is feedback after considering A Plan for C++23 Ranges Disclosure: I voted in favor of this. It does not suggest work on views::maybe [P1255R6]‚Äč. I’m fine with that priority. Vocabulary is not just Types between Components There’s broad agreement that ‘vocabulary types’ belong in the standard. Domain independent types that can be used between …

Blog Infrastructure Work

What feels like actual productive work, but is only work adjacent? Fixing up the blog. I managed to gradually destroy the whole thing after a decade or more of platform migrations and upgrades. This is a new and from (mostly) scratch install, into which I’ve imported the contents of the old one. Good backups and …

Value Oriented Programming: A Manifesto

Object Oriented Programming The primitive entities are objects which have certain properties Objects have Identity Objects have State Objects have Behavior Values are not Objects The primitive entities are values which have none of the properties of Objects Values have no identity Values have no State Values have no Behavior A positive definition of VOP …

AnyDuck : A Value Type Erased Type

A Constrained Duck Typed Value Type For yak shaving reasons, I need a type able to hold any type conforming to a particular interface. I’d like this to act as a (Semi)Regular value type. That is, I’d like it to be copyable, assignable, and so forth, and not be sliced or otherwise mangeled in the …

Building Saar Raz’s clang concepts branch

A Recipe for building Saar Raz’s clang concepts branch Saar Raz has been working on a Concepts implementation, available at https://github.com/saarraz/clang-concepts It’s not much harder to build it than clang usually is, it’s just a matter of getting things checked out into the right places before configuring the build. Just like LLVM and clang normally. …

Should Unicode literals be guaranteed to be well-formed?

TL;DR Betteridge’s law applies: No. Are you still here? Unicode Literals In C++ 20 there are 2 kinds and 6 forms of Unicode literals. Character literals and string literals, in UTF-8, UTF-16, and UTF-32 encodings. Each of them uses a distinct char type to signal in the type system what the encoding is for the …

Litmus Tests for Multithreaded Behavior

/* @licstart The following is the entire license notice for the JavaScript code in this tag. Copyright (C) 2012-2018 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License (GNU GPL) as published by the Free …

Why std::bind can’t be (formally) deprecated

Yes: std::bind should be replaced by lambda For almost all cases, std::bind should be replaced by a lambda expression. It’s idiomatic, and results in better code. There is almost no reason post C++11 to use std::bind. Doing so is quite straightforward, capture each bind argument by value in the lambda capture list, and provide auto …