Минимальный пример:
using namespace System;
//#using <System.Core.dll>
class A
{
public:
const wchar_t* F() { return L""; }
};
String^ readUnicodeString(A& msg)
{
const wchar_t* text = msg.F();
String^ str = gcnew String(text); // <<< ICE указывает сюда
return str;
}
int main() {}
Компилятор VS 2008.
Если раскомментировать то получаем ICE.
Указывает на
1>fatal error C1001: An internal error has occurred in the compiler.
1> (compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c[0x6396E0DB:0x00000030]', line 182)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
1> Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
1> INTERNAL COMPILER ERROR in 'C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\CL.exe'
1> Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
Со старым синтаксисом управляемого C++ всё компилируется без проблем.
Есть идеи как обойти ?