Compartir a través de


Error de compilador C2178

'identificador' no se puede declarar con el especificador 'especificador'

Observaciones

Se usó un especificador mutable en una declaración, pero el especificador no se permite en este contexto. Solo se puede aplicar a miembros de datos no estáticos, no constantes y no de referencia. Para obtener más información, consulte Miembros de datos mutables.

Se consteval usó un especificador en un destructor, una función de asignación o una función de desasignación.

Ejemplo: mutable

En el ejemplo siguiente se muestra cómo puede producirse C2178 con el mutable especificador y cómo resolverlo:

// C2178_mutable.cpp
// compile with: /c

struct S
{
    mutable const int i;   // C2178, remove mutable or const to resolve
};

mutable int x = 4;   // C2178, remove mutable to resolve

Ejemplo: consteval

En el ejemplo siguiente se muestra cómo puede producirse C2178 con el consteval especificador. Para resolver este error, quite todos los consteval especificadores:

// C2178_consteval.cpp
// compile with: /c /std:c++20

#include <cstddef>

struct S
{
    consteval ~S() {}   // C2178

    consteval static void* operator new(std::size_t size);   // C2178
    consteval static void operator delete(void* ptr);        // C2178
};