Knowledge Base

FIX: C1001 in Compiler File MSC1.CPP at Line 1089

Article ID: 155386

Article Last Modified on 7/5/2005


APPLIES TO


This article was previously published under Q155386

SYMPTOMS

When defining a template function and a nontemplate function of the same name such that the nontemplate version is defined within a namespace, you may encounter the following error:
   test.cpp(28) : fatal error C1001: INTERNAL COMPILER ERROR
                  (compiler file 'msc1.cpp', line 1089)
					

RESOLUTION

There are three ways to work around this problem:

  1. Change the name of one of the functions involved. -or-

  2. Move the using directive to local function scope. See the sample code below. -or-

  3. Instead of a using directive, use the scope resolution operator to reference objects in the namespace. See the sample code below.

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

   /* Compile options needed: None
   */ 
   template<class T> int test1( T x)
   {
       return 1;
   }

   namespace A{

       int test1(int)
       {
           return 1;
       };
   }

   int test2()
   {
       return test1(1);
   }

   using namespace A;  // comment out this line for workarounds 2 & 3.

   void main()
   {
   //  using namespace A;  // uncomment this line for workaround 2
       test1(1);
   //  A::test1(1);        // uncomment this line for workaround 3
   }
				

Additional query words: kbVC420bug

Keywords: kbbug kbfix kbvc500fix kbcpponly kbcompiler KB155386