- Não há inferência automática de tipos; os tipos de variáveis precisam ser especificados explicitamente.
- Não há semântica de movimentação e referências de valor, resultando em código ineficiente.
- Não há palavra-chave nullptr, então você precisa usar 0 ou NULL para representar um ponteiro nulo.
- Os arquivos de cabeçalho e de origem precisam ser incluídos e vinculados manualmente, o que é propenso a problemas de definição duplicada e dependência.
- Não há funções emplace e emplace_back do contêiner da biblioteca padrão, resultando em construção e inserção de elementos ineficientes.
O C++ 11 fez uma série de melhorias e extensões para resolver os problemas acima, incluindo principalmente os seguintes recursos:
- As palavras-chave auto e decltype podem deduzir os tipos de variáveis e expressões.
- Mova a semântica e as referências de valor, transfira a propriedade de objetos de valor e evite cópias e destruição desnecessárias.
- A palavra-chave nullptr, em vez de 0 e NULL, pode representar um ponteiro nulo com mais precisão.
- A inclusão e vinculação automática de arquivos de cabeçalho e arquivos de origem evitam definições duplicadas e problemas de dependência.
- As funções emplace e emplace_back do contêiner da biblioteca padrão podem construir e inserir elementos diretamente no contêiner, o que é mais eficiente.
Além disso, o C++ 11 também adiciona novos recursos, como expressões lambda, funções constexpr e modelos variados, o que expande os recursos de linguagem e a expressividade do C++.