FIX: Manipulator Causes C1001 IC Error in MSC1.CPP Line 1056Last reviewed: September 18, 1997Article ID: Q131312  | 
	
| 
	
 
2.00 2.10
WINDOWS NT
kbtool kbfixlist
 The information in this article applies to: 
 
 SYMPTOMSThe compiler generates the following compiler error: 
 fatal error C1001: INTERNAL COMPILER ERROR ( compiler file 'msc1.cpp', line 1056 )This occurs when the code meets both of these conditions: 
 
       iostream_specifier insertion/extraction_operator manipulator
   For example:
      cout << endl;  // fails if template operator << was defined
      cout << flush; // fails if template operator << was defined
      cin >> ws;     // fails if template operator >> was defined
RESOLUTIONThe problem does not occur if an identifier of any type is inserted into the expression. For example, if 'a' is a variable (of any type): 
 cout << a << endl; // does not fail cout << '\n' << flush; // does not fail cin >> a >> ws; // does not fail STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was fixed in Microsoft Visual C++, 32-bit Edition, version 4.0. 
 MORE INFORMATIONTo demonstrate the workaround, change the lines marked "internal compiler error" into comments. 
 Sample Code to Demonstrate Problem
 /* Compile options needed: none */ #include <iostream.h> #include <strstrea.h>template <class T> ostream& operator<< ( ostream&, T& ); template <class T> istream& operator>> ( istream&, T& ); 
 void x(ostrstream &ot){ int a; cout << endl; // internal compiler error ot << flush; // internal compiler error cin >> ws; // internal compiler error cout << "test" << endl; // no error ot << '\n' << flush; // no error cin >> a >> ws; // no error }  | 
	
	Additional reference words: 9.00 9.0 2.00 2.10 9.10 9.1 
 © 1998 Microsoft Corporation. All rights reserved. Terms of Use.  |