C++? Really? When will people stop using a macro wrapper around a portable assembler for their code? Especially code that has to be correct.
Erlang, Elixir, Haskell, lots of good choices, in fast, functional languages where you won't shoot yourself daily in the foot. Sheesh.
How do you feel about Rust? My understanding is you can build smart contracts on EOS using anything that compiles to web assembly.