Category: Uncategorized

  • Concept Maps using C++23 Library Tech

    Abstract C++0x Concepts had a feature Concept Maps that allowed a set of functions, types, and template definitions to be associated with a concept and the map to be specialized for types that meet the concept. This allowed open extension of a concept. A definition could be provided that allows an algorithm to operate in…

  • Slides from C++Now 2023 Async Control Flow

    Using Sender/Receiver for Async Control Flow Steve Downey These are the slides, slightly rerendered, from my presentation at C++Now 2023. Abstract How can P2300 Senders be composed using sender adapters and sender factories to provide arbitrary program control flow? How do I use these things? Where can I steal from? std::execution P2300 Recent version at…

  • Some Informal Remarks Towards a New Theory of Trait Customization

    A Possible Technique constexpr bool g(int lhs, int rhs) { auto& op = partial_eq<int>; return op.ne(lhs, rhs); } Compiler Explorer with Supporting Code A trait is defined as a template variable that implements the required operations. Implementation of those operations is possible via a variety of techniques, but existence is concept checkable. It might prove…

  • std::execution, Sender/Receiver, and the Continuation Monad

    Some thoughts on the std::execution proposal and my understanding of the underlying theory. What’s proposed From the paper’s Introduction This paper proposes a self-contained design for a Standard C++ framework for managing asynchronous execution on generic execution contexts. It is based on the ideas in [P0443R14] and its companion papers. Which doesn’t tell you much.…

  • A local CMake workflow with Docker

    l#+BLOG: sdowney An outline of a template that provides an automated workflow driving a CMake project in a docker container. This post must be read in concert with https://github.com/steve-downey/scratch of which it is part. Routine process should be automated Building a project that uses cmake runs through a predictable lifecycle that you should be able…

  • 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…

  • 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…

  • Steve Downey’s Birthday (Observed)

    LOCATION: Blooms Tavern208 East 58th StreetBetween 2nd & 3rd AveNew York, NY 10022 TIME: 6:00 PM -> Description: This is the soundI bought a ticket to the worldBut now I’ve come back againWhy do I find it hard to write the next line?Oh, I want the truth to be saidI know this much is true…

  • 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.…