FIX: Error C2783 - Cannot Deduce Non-Type Template Parameter

ID: Q165803


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), used with:
    • Microsoft Visual C++, 32-bit Editions, version 5.0
    • Microsoft Visual Studio 6.0, SP2


SYMPTOMS

The sample code in the MORE INFORMATION section causes the compiler error C2783:

'declaration' : could not deduce template argument for 'identifier'


RESOLUTION

The workaround is to avoid argument deduction by specifying the template-parameter-list when calling the function template.


STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.

This problem was corrected in Microsoft Visual C++ version 6.0.


MORE INFORMATION

The following sample code demonstrates the problem and the workaround:

SAMPLE


      /* Compile options needed: none
      */ 

      template <int I>
      struct C
      {
          int a[I] ;
      };

      template <int I>
      int F(C<I> a)
      {
          return I ;
      }

      int main ()
      {
          int i;
          C<4>  CObj ;

          i  = F(CObj);

          // Workaround: Comment the line above.
          // Uncomment the following line
          // i = F<4>(CObj);

          return 0 ;
      } 

Additional query words:

Keywords : kbVC500bug kbVC600fix kbVS600sp2
Version : winnt:5.0
Platform : winnt
Issue type : kbbug


Last Reviewed: April 11, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.