C28303
Aviso C28303: Para o parâmetro de referência de C++ <parameter_name>, um operador ambíguo _Deref_ foi encontrado em <anotação>.
Este aviso é semelhante ao aviso C28302 e é relatado quando um nível adicional de _Deref_ é usado em um parâmetro.
SAL2 não requer o uso de um nível adicional de _Deref_ ao manipular os parâmetros de referência.Esta anotação específica é ambígua em relação ao nível de desreferência que destina-se a ser anotado.Pode ser necessário usar _At_ para fazer referência ao objeto específico a ser anotado.
Exemplo
O seguinte código gera este aviso pois o uso de __deref_out_ecount(n) é ambíguo:
void ref(__deref_out_ecount(n) int **&buff, int &n)
A anotação anterior pode ser interpretada tanto como:
uma referência a um vetor de ponteiros (tamanho n) para números inteiros (interpretação SAL1)
uma referência para um ponteiro para um vetor (tamanho n) de inteiros (interpretação SAL2)
Qualquer um dos seguintes pode corrigir esse aviso:
void ref(_Out_writes_(n) int **&buff, int &n)
// or
_At_(*buff), _Out_writes(n)) void ref(int **&buff, int &n)