O C ++ é um híbrido, não porque permite escrever código no estilo C, mas porque suporta vários paradigmas de programação, como procedurais, orientados a objetos e genéricos. O C ++ não o força a uma maneira de fazer as coisas, e essa é a sua força, porque problemas diferentes podem ser resolvidos mais facilmente usando paradigmas diferentes.
IMHO, seria melhor se a linguagem / compilador obrigasse, até certo ponto, os programadores a escrever um código mais elegante.
Então você primeiro precisa definir o que significa elegante . Em seguida, é necessário verificar se sua definição de elegante é apropriada para todos os domínios e plataformas com problemas nos quais o C ++ é usado. Um estilo de codificação elegante para escrever um processador de texto para Windows pode não ser adequado para a gravação de um sistema incorporado.
Considere escrever código C ++ para executar em um DSP. Primeiro, o compilador C ++ para esse DSP pode simplesmente não suportar certos recursos do C ++, como fluxos. Segundo, você está severamente limitado pela velocidade da CPU e, possivelmente, pela memória, portanto alguns recursos do C ++ podem simplesmente prejudicar o seu desempenho. Por exemplo, você pode ter que evitar funções virtuais por uma questão de velocidade. Tais considerações mudariam radicalmente seu estilo de programação, comparado ao que você usaria em um PC, e o C ++ permite isso.
Para resumir, o C ++ é uma linguagem enorme e complicada, com muitos recursos. Há muitas razões pelas quais qualquer subconjunto desses recursos pode não ser aplicável a um projeto específico: velocidade, portabilidade, suporte ao compilador ou até mesmo experiência e familiaridade com o programador. Por esse motivo, o idioma para forçar o desenvolvedor a usar determinados recursos em oposição a outros para qualquer tarefa é uma má idéia. Pense em Java, onde a linguagem exige que todas as funções sejam o método de uma classe. Existem muitos casos em que a criação de uma classe apenas para envolver um método é incômoda e desnecessária, e você precisa fazer isso porque a linguagem o obriga.