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 […]

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 […]

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 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 […]

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 […]