- fully evented with arbitrary number of threads servicing event loops
- straightforward API with examples
- HTTP 1.1/2/3 out of the box
- terminates SSL/TLS out of the box
- extremely hardened
It’s not tiny and header only or anything trendy like that, but it’s fast as hell, easy to code to, builds with cmake easily, actively developed, and runs one of the biggest sites on the Web.
I have yet to find a major downside.
header-only slows compilation down just so you can avoid adding in a single line in your build chain of choice. It's just not a trade off worth making imo.
So to me, not being header only is a pro, not a con.
It's not that I'll outright refuse to use a header-only lib, only that I very very strongly prefer not using them.