Knowledge Base

FIX: C2664 When Array Is Passed as a Parameter to a Function

Article ID: 143083

Article Last Modified on 7/5/2005


APPLIES TO


This article was previously published under Q143083

SYMPTOMS

The compiler will generate the following error when you pass a multiple subscript array to a function that expects a const of the same type of array:
error C2664: 'Func2' : cannot convert parameter 1 from 'int [4][4]' to
'const int [][4]' (new behavior; please see help)

RESOLUTION

Don't declare the parameter to be 'const' in the function definition.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 5.0.

MORE INFORMATION

Sample Code to Demonstrate Problem

   /* Compile options needed: None
   */ 

   typedef int Matrix1[4];
   typedef int Matrix2[4][4];

   void Func1( const Matrix1 ) {}

   // Remove const in the following statement to work around

   void Func2( const Matrix2 ) {}

   void main()
   {
      Matrix1 a = {1,2,3,4};
      Matrix2 b = {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};

      Func1( a );
      Func2( b );   // C2664 here
   }

				

Additional query words: kbVC400bug

Keywords: kbbug kbfix kbvc500fix kbcpponly kbcompiler KB143083