It requires that you use OpenGL ES 2.0 for graphics (since it uses WebGL in the translation, which is roughly equivalent to GLES2). It is easy to use SDL for windowing and input as Emscripten natively supports bindings for that, though some other common toolkits are also supported; for any other libraries you'd need to do the binding yourself. I/O, audio, networking, and so on are supported. Threading is not yet supported but work is underway to handle it.
Note that even big game engines like Unreal have been ported to the Web via Emscripten, so it's very much a viable and production-ready toolset.
There are some other C++-to-JS transpilers out there, but Emscripten is the most well-known and developed right now.