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

ID: Q155386


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), included with:
    • Microsoft Visual C++, 32-bit Editions, version 4.2


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.


  2. -or-

  3. Move the using directive to local function scope. See the sample code below.


  4. -or-

  5. 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 : kbCompiler kbCPPonly kbVC kbVC500fix
Version : 4.2
Platform : NT WINDOWS
Issue type : kbbug


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