Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Collapse the table of content
Expand the table of content


warning C28303: For C++ reference-parameter <parameter_name>, an ambiguous _Deref_ operator was found on <annotation>.

This warning similar to warning C28302 and is reported when an extra level of _Deref_ is used on a parameter.

SAL2 does not require the use of an extra level of _Deref_ when dealing with reference parameters. This particular annotation is ambiguous as to which level of dereference is intended to be annotated. It may be necessary to use _At_ to reference the specific object to be annotated.

The following code generates this warning because the use of __deref_out_ecount(n) is ambiguous:

   void ref(__deref_out_ecount(n) int **&buff, int &n)

The above annotation could be interpreted either as:

  • a reference to an array (of n) pointers to integers (SAL1 interpretation)

  • a reference to a pointer to an array (of n) integers (SAL2 interpretation)

Either of the following can correct this warning:

   void ref(_Out_writes_(n) int **&buff, int &n)
   // or
   _At_(*buff), _Out_writes(n)) void ref(int **&amp;buff, int &amp;n)
© 2015 Microsoft