Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Felmeddelande
Anmärkningar
Felet C2338 kan orsakas av ett static_assert fel under kompilering. Meddelandet tillhandahålls av parametrarna static_assert .
Fel C2338 kan också genereras av externa leverantörer till kompilatorn. I de flesta fall rapporteras dessa fel av en attributprovider-DLL, till exempel ATLPROV. Några vanliga former av det här meddelandet är:
Attributet Atl-attributprovider: felmeddelande om ATL-nummer
Felaktig användning av attributet "attribute"
"usage": felaktigt format för attributet "usage"
Dessa fel kan ofta inte återställas och kan följas av ett allvarligt kompilatorfel.
Åtgärda dessa problem genom att korrigera attributanvändningen. I vissa fall måste till exempel attributparametrar deklareras innan de kan användas. Om du anger ett ATL-felnummer kan du läsa mer specifik information i dokumentationen för felet.
Example
I Standard C++11 och senare constexpr beaktas noexcept inte längre funktioner som standard när de används i ett konstant uttryck. Den här beteendeändringen kommer från lösningen för CWG (Core Working Group) CWG 1351 och är aktiverad i /permissive- läge. Följande exempel kompileras i Visual Studio 2019 version 16.1 och tidigare, men producerar C2338 i Visual Studio 2019 version 16.2:
// c2338.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338.cpp
constexpr int f() { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept"); // C2338 in 16.2
}
Åtgärda felet genom att lägga till noexcept uttrycket i funktionsdeklarationen:
// c2338_fixed.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338_fixed.cpp
constexpr int f() noexcept { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept");
}