Ich denke, dass ich einen Compilerfehler in dem MSVC++ - Compiler gefunden haben könnte, der mit VS2013 geliefert wird, aber es ist solch ein einfacher Fall, ich kann nicht sicher sein. Gekoppelt mit der Tatsache, dass ich immer noch C++ lerne, wollte ich hier fragen, bevor ich irgendetwas einreiche; weil ich mir ehrlich gesagt ziemlich sicher bin, dass ich etwas falsch mache, was zu einer ungewöhnlichen Fehlermeldung führt.Ist das ein MSVC++ - Compilerfehler?
Wie auch immer, reduziert ich das Problem in einer kleinen Testdatei:
#include <string>
#include <iostream>
std::wstring cstr_to_wstring(const char* cString) {
std::string temp = cString;
return { temp.begin(), temp.end() };
}
int main() {
std::cout << cstr_to_wstring("Hi").c_str();
}
Wenn ich versuche, das zu kompilieren, bekomme ich folgende Fehlermeldung:
1>d:\documents\projects\compilerbugtest\compilerbugtest\compilerbugtest.cpp(6): fatal error C1001: An internal error has occurred in the compiler.
1> (compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 227)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
, um das Problem zu umgehen I geben Sie einfach den Typ auf der Leitung kann sechs, so dass:
return { temp.begin(), temp.end() };
wird
return std::wstring { temp.begin(), temp.end() };
.
Ist das wirklich ein Compiler Bug? Vielen Dank.
Ich würde sagen: "Ein interner Fehler im Compiler" ist immer Berichterstattung wert, unabhängig vom verwendeten Quellcode. – GSerg
Wenn der Compiler angibt, dass dies ein Compiler-Fehler ist, dann ist es ein Fehler im Compiler oder es ist ein Fehler zu sagen, dass es sich um einen Fehler im Compiler handelt. In beiden Fällen ist es ein Compiler Bug :-) –
Haha, gute Punkte, GSerg und Torsten ... :) – Xenoprimate