I managed to rip out another chunk of slightly-incomprehensible code from libsigc++, and those improvements are in libsigc++-3.0’s 2.99.5 version.
Now there’s no common functor_base base class and I removed all those interdependent result_type typedefs that were scattered throughout the code. When I had unravelled the whole result_type chain, I could replace it with just a handful of decltype(auto) uses, realising that that’s what the whole mess was trying to achieve. I love decltype(auto).
Congrats! decltype, auto, and their combination are certainly hugely powerful, and it’s great to hear sigc is benefiting more and more from the evolution of C++. That to me is the ace up the sleeve of gtkmm and sigc: that were built in standard C++ and you actively work to incorporate its improvements. They’re not [cough] C++98 with proprietary h4x
Anyway, is it me, or does deleting obsoleted code almost feel better than writing new stuff? :-) I often find that after going through my codebase improving and streamlining things, it does more, better, with much less. Achieving the balance of simplicity and power – a great feeling!