The reason for the interest in TLS usage is that accessing any globals (TLS being a global in this sense), including ints and pointers, makes functions not refrentially transparent and inhibits optimizations such as common subexpression elimination.
I guess this concern will be addressed when some benchmarking is performed.
I acknowledge that this is not the only difference between the two libraries. I guess it is just my bias towards performance that makes me overlook other aspects.
It's definitely the case that thread_local storage is currently poorly optimised on any major compiler. See https://godbolt.org/z/eDiIV0 for just how badly (this should optimise down to 'puts("boo\n")'). But it *could* be the case that compilers wouldn't suck so bad in the future. That said, Outcome was specifically designed for today's compilers with all their failings. It was not designed for hypothetical future compilers. (In case anyone is wondering, Outcome is into the boost superproject for the 1.70 release. I am currently writing the Python scripting to replicate, perfectly, the commit history from Outcome into Boost.Outcome for master and develop branches) Niall