Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O parâmetro «parâmetro» é uma referência a um ponteiro único constante, use
const T*ouconst T&em vez disso (r.32)
Geralmente, as referências ao ponteiro único const não têm sentido. Eles podem ser substituídos com segurança por uma referência bruta ou um ponteiro. Este aviso impõe a regra R.32 das Diretrizes Principais do C++.
Observações
As verificações de ponteiro exclusivas têm critérios bastante amplos para identificar ponteiros inteligentes. A regra R.31 das Diretrizes Principais do C++: Se tiver smart pointers não-std, siga o padrão básico de std que descreve as noções de ponteiro único e ponteiro partilhado. A heurística é simples, mas pode levar a surpresas: um tipo de ponteiro inteligente é qualquer tipo que defina
operator->ouoperator*. Um tipo passível de cópia (ponteiro compartilhado) deve ter um construtor de cópia pública ou um operador de atribuição sobrecarregado que lida com um parâmetro de referência não-Rvalue.O código do modelo pode produzir avisos barulhentos. Tenha em mente que os modelos podem ser instanciados com vários parâmetros de tipo com diferentes níveis de indireção, incluindo referências. Alguns avisos podem não ser óbvios e as correções podem exigir algum retrabalho de modelos (por exemplo, remoção explícita de indirecionamento de referência). Se o código do modelo for intencionalmente genérico, o aviso pode ser suprimido.
Nome da análise de código: NO_REF_TO_CONST_UNIQUE_PTR
Exemplo
Referência desnecessária:
std::vector<std::unique_ptr<Tree>> roots = GetRoots();
std::for_each(
roots.begin(),
roots.end(),
[](const auto &root) { Rebalance(root.get()); }); // C26410