Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O parâmetro 'parâmetro' é uma referência a const ponteiro exclusivo, use
const T*ouconst T&em vez disso (r.32)
Geralmente, as referências ao ponteiro const unique não têm nenhum efeito. Elas podem ser substituídas com segurança por uma referência bruta ou um ponteiro. Esse aviso impõe a regra R.32 das Diretrizes Principais do C++.
Comentários
As verificações de ponteiro exclusivo têm critérios bastante amplos para identificar ponteiros inteligentes. A regra R.31 das Diretrizes Principais do C++: se você tiver ponteiros inteligentes não padrão, siga o padrão básico do std que descreve os conceitos de ponteiro exclusivo e ponteiro compartilhado. A heurística é simples, mas pode levar a surpresas: um tipo de ponteiro inteligente é qualquer tipo que define ou
operator->operator*. Um tipo copiável (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. Lembre-se 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 dos modelos (por exemplo, remoção explícita de indireção de referência). Se o código do modelo for intencionalmente genérico, o aviso poderá 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