Microsoft KB Archive/131312

= FIX: Manipulator Causes C1001 IC Error in MSC1.CPP Line 1056 =

Article ID: 131312

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1

-



This article was previously published under Q131312



SYMPTOMS
The 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:

  It contains a function template that overwrites the << operator (insertion operator) or the >> operator (extraction operator) for class ostream. For example: template  ostream& operator<<( ostream&, T& ); //or template  istream& operator>>( istream&, T& );   It contains an expression of the form: 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 



RESOLUTION
The 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



STATUS
Microsoft 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 INFORMATION
To demonstrate the workaround, change the lines marked "internal compiler error" into comments.

Sample Code to Demonstrate Problem
/* Compile options needed: none


 * 1) include 
 * 2) include 

template  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 query words: 9.00 9.0 2.00 2.10 9.10 9.1

Keywords: kbbug kbfix KB131312

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.