Neither the current C++2b draft, nor any revision of [p1135], nor libstdc++, claims that `counting_semaphore` should be default-constructible. I think this was just a copy-paste issue somehow. Also, `explicit` was missing from the constructor. Also, `constexpr` was missing; but that's probably more of a technical limitation, since apparently there are some platforms where we don't (can't??) use the atomic implementation and have to rely on pthreads, which obviously isn't constexpr. Let's see what buildkite thinks of the `constexpr` keyword here.
Indeed, buildkite doesn't like the constexpr ( https://buildkite.com/llvm-project/libcxx-ci/builds/5432 ), so I'll remove it for now, but I think we should consider taking a quick ABI break to get us onto the atomic-based implementation everywhere. Otherwise I don't really see what the path forward is, as C++ keeps cranking out standards; we can't get stuck with a pre-C++20 semaphore forever, right?
You need to remove this since this is a compile.pass.cpp test -- it won't fail because of back-deployment.