¿Hay una manera de construir calificadores personalizados de C++?
compile-time qualifiers (1)
¿Hay alguna forma de implementar un calificador de tipo personalizado (similar a const)? Me gustaría solo permitir llamadas de función a funciones que tengan la calificación correcta, dentro de funciones con la misma calificación.
Digamos que tendría:
void allowedFunction();
void disallowedFunction();
//Only allowed to call allowed functions.
void foo()
{
allowedFunction();
disallowedFunction(); //Cause compile time error
}
//Is allowed to call any function it wants.
void bar()
{
allowedFunction();
disallowedFunction(); //No error
}
La razón por la que me gustaría hacer esto es porque quiero asegurarme de que las funciones llamadas en un subproceso específico solo llamen funciones seguras en tiempo real. Dado que muchas aplicaciones requieren subprocesos duros y seguros en tiempo real, tener alguna forma de detectar bloqueos en tiempo de compilación nos garantizaría que no puedan ocurrir muchos errores difíciles de detectar en el tiempo de ejecución.
Tal vez puedas poner las funciones en una clase y hacer que los amigos de la clase permitidos sean así:
#include <iostream>
class X
{
static void f(){}
friend void foo(); // f() is only allowed for foo
};
void foo() // allowed
{
X::f();
}
void bar() // disallowed
{
//X::f(); // compile-time error
}
int main()
{
}
Probablemente puedas escribir una macro loca que haga esto de manera transparente para cada función que desees permitir / rechazar.