E2472 Eine Elementfunktion kann nicht über die Instantiierung deklariert werden (C++)
Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index
Dieser Fehler wird generiert, wenn bei einer Deklaration innerhalb einer Template-Klasse ein Funktionstyp von einem Template-Parameter abhängt und sich daraus eine Deklaration ergibt, die nicht der syntaktischen Form einer Funktionsdeklaration entspricht. Ein Beispiel:
template<class T>
struct A {
static T t;
};
typedef int function();
A<function> a; // Fehler: würde A<funktion>::t als eine
// statische Elementfunktion deklarieren
Ein weiteres Beispiel:
Im folgenden Beispiel hat das Template-Element 'a' den Typ 'T'. Wenn die Template mit T als Funktionstyp instantiiert wird, wird dadurch impliziert, dass 'a' eine Elementfunktion ist. Dies ist nicht zulässig, und die Fehlermeldung wird ausgegeben.
template<T& x> class foo { T a; }
int func(int);
template class foo<func>;