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. |