Have you seen xed [1]? It seems to fit the bill nicely from what I understand about your requirements.
[1] https://software.intel.com/sites/landingpage/pintool/docs/67...
[1] https://software.intel.com/sites/landingpage/pintool/docs/67...
I guess it's not fair to say that XED and DynASM are "much more complicated than the problems they're trying to solve." They are much more complicated than the problem I'm trying to solve. But I am surprised that there is no minimal X86 encoder with nice C++ syntax out there.