No C ++, recursos como exceções afetam todo o programa: você pode desabilitá-los em todo o programa ou precisa lidar com eles em todo o código. Como um artigo famoso no C ++ Report coloca:
Contra-intuitivamente, a parte mais difícil das exceções de codificação não são os lançamentos e capturas explícitos. A parte realmente difícil de usar exceções é escrever todo o código intermediário de forma que uma exceção arbitrária possa se propagar do site de lançamento para o manipulador, chegando com segurança e sem danificar outras partes do programa ao longo do caminho.
Como até newlança exceções, todas as funções precisam fornecer segurança básica contra exceções - a menos que apenas chame funções que garantam a exceção - a menos que você desative completamente as exceções em todo o projeto .
Portanto, as exceções são um recurso de "programa inteiro" ou "equipe inteira", pois devem ser entendidas por todos em uma equipe que as utiliza. Mas nem todos os recursos do C ++ são assim, tanto quanto eu sei.
Um exemplo possível é que, se eu não conseguir modelos, mas não os usar, ainda poderei escrever C ++ correto - ou não? Posso até chamar sortuma matriz de números inteiros e aproveitar sua incrível vantagem de velocidade. C's qsort(porque nenhum ponteiro de função é chamado), sem arriscar bugs - ou não? Parece que os modelos não são "toda a equipe".
Existem outros recursos do C ++ que afetam o código que não os usa diretamente e, portanto, são "equipe inteira"? Estou especialmente interessado em recursos que não estão presentes em C.
Atualização : estou procurando especialmente recursos em que não há sinal imposto pelo idioma que você precisa conhecer. A primeira resposta que eu mencionei const-correção, que também é toda a equipe, portanto todos precisam aprender sobre isso; no entanto, o AFAICS afetará você apenas se você chamar uma função que está marcada const, e o compilador impedirá que você a chame em objetos não-const, para que você obtenha algo para o Google. Com exceções, você nem entende; além disso, eles sempre são usados assim que você usa new, portanto as exceções são mais "insidiosas". Como não posso expressar isso de maneira objetiva, aprecio qualquer recurso de toda a equipe.
Atualização 2 : em vez do recurso C ++, eu deveria ter escrito algo como "recurso específico do C ++", para excluir itens como multithreading que se aplicam a uma grande quantidade de linguagens de programação convencionais.
Apêndice: Por que essa pergunta é objetiva (se você se pergunta)
O C ++ é uma linguagem complexa; muitos projetos ou guias de codificação tentam selecionar recursos "simples" do C ++, e muitas pessoas tentam incluir ou excluir alguns de acordo com critérios subjetivos. Perguntas sobre esse assunto são regularmente encerradas com regularidade aqui no SO.
Acima, em vez disso, eu defini (o mais precisamente possível) o que é um recurso de linguagem de "equipe inteira", forneço um exemplo (exceções), juntamente com extensa evidência de suporte na literatura sobre C ++, e solicito recursos de equipe inteira em C ++ além de exceções.
Se você deve usar os recursos de "equipe inteira" ou se esse é um conceito relevante, pode ser subjetivo - mas isso significa apenas que a importância dessa questão é subjetiva, como sempre.