Warum this
ist nicht in ungeprüften Kontext in statischen Elementfunktionen zulässig?dies in nicht bewertetem Kontext in statischen Elementfunktionen
struct A
{
void f() {}
static void callback(void * self) // passed to C function
{
static_cast< decltype(this) >(self)->f();
}
};
Dieser Code gibt einen Fehler:
error: 'this' is unavailable for static member functions
static_cast< decltype(this) >(self)->f(); ^~~~
decltype(this)
es der Kürze halber benötigt wird (manchmal ist es viel kürzer, dann VeryVeryLongClassName *
), ein weiterer Vorteil ist die Tatsache, dass die Absicht mehr klar.
Welcher Standard besagt, dass this
in nicht bewerteten Kontexten in statischen Elementfunktionen verwendet wird?
Possible Duplikat [C++ Typ der umschließenden Klasse in statischer Elementfunktion] (https://stackoverflow.com/questions/21143275/c-type-of-enclosing-class-in-static-member-function) –