C++17 is a slight disappointment, I hope C++20 will be the real deal - concepts could really be a game changer and move semantics needs more fixes :/.
D has had concepts for quite a while. They call them template constraints: https://dlang.org/concepts.html You should give D metaprogramming a try. It's a whole new world, a new fantastic point of view.
I think its good all around and balanced languages, but, there is always a better language for any use case, where D is an alternative
Ocaml, if you want performance close to C/C++ plus and high level abstractions
Rust, if you want manual memory managment
C# and Java, if you want large ecosystems and advanced features
Also C++ is now moving and improving fast Even Ada is sort of making a come back