it’s very difficult to create ~Copyable things that compose. a lot of times i have an idea, like “make a noncopyable structure that yields a view of itself through some accessor” and then i go out on a limb trying to implement it, only to find out it doesn’t compile.
many times, i conceive of the noncopyable abstraction as a technique to prevent bugs, but the ceremony needed to make noncopyable things actually compile actually ends up being a much larger bug surface for mistakes to creep in. for example, accidentally dropping a field when reconstructing self from its constituent components.
i often feel at a loss for where i am supposed to learn how to get the most out of this system, or what the actual gaps are in my understanding that i need to fill in, or what the right patterns i need to learn actually are. what few resources exist are usually unhelpful, with common tropes including:
“you just haven’t internalized the key concepts yet”
“you’re just not using them correctly”
“you need to make a mental leap to grasp this completely new (and superior!) architectural paradigm”
but in the end, your team will spend a lot of time trying to grasp superior architectural paradigms while coming away with little to show for it in terms of skills acquired.