I don't see how this could ever work on evolving languages, different GIT versions would produce different commits and read commits differently based on the latest C++ standard. This would potentially lead to version control bugs where different GIT versions creates different results from the same commit, that is horrible, version control needs to be 100% bug free in that regard.
The only reasonable application would be to use a language AST parser to better identify relevant text diffs, but the commits still needs to be stored as text.
This doesn't really make sense, because in order to have those code changes compile correctly, there must be a corresponding commit to CI config that changes the complier version or compiler switches for the new language version. The "semantic-diff-er" can also be driven by that commit such that it uses the correct language version.
The only reasonable application would be to use a language AST parser to better identify relevant text diffs, but the commits still needs to be stored as text.