Abrindo a thread pra compartilhar coisas legais que achei
recentemente. Comunidade da linguagem de programação Racket (uma
variante de Lisp) conseguiu implementar sistemas de tipos como macros
(imagine que você pudesse customizar o typechecker do compilador de
C++ usando funções constexpr... é esse nível de meta-programação com a
qual a galera de Lisp está acostumada):
https://www.youtube.com/watch?v=j5Hauz6cewM
E essa pesquisa não é só pra toy tool. Conseguiram implementar o
sistema de tipos de Haskell98 usando essa técnica:
https://www.youtube.com/watch?v=5QQdI3P7MdY
Também conseguiram implementar sistema de tipos dependentes:
https://www.youtube.com/watch?v=lL3JhoHOlFY
Tem mais coisas, mas imaginem que C++ pudesse receber um sistema de
tipos secundário (e terceário, e quaternário, etc) pra operar
cooperando com o primário. Toda aquela história da proposta rejeitada
do safecpp (modelo de Rust pra C++) seria um non-issue, que você
consegue resolver importando uma biblioteca escrita em C++ e não
mudaria nada do compilador em si.