Error del compilador C3848

Actualización: noviembre 2007

Mensaje de error

la expresión con el tipo 'tipo' perdería algunos calificadores const y volatile para poder llamar a 'función'
expression having type 'type' would lose some const-volatile qualifiers in order to call 'function'

Una variable con un tipo const o volatile especificado sólo puede llamar a funciones miembro definidas con calificaciones const o volatile iguales o superiores.

Los ejemplos siguientes generan el error C3848:

// C3848.cpp
void glbFunc1()
{
}

typedef void (* pFunc1)();

struct S3
{
   operator pFunc1() // const
   {
      return &glbFunc1;
   }
};

int main()
{
   const S3 s3;
   s3();   // C3848, uncomment const qualifier
}