E2472 Impossible de déclarer une fonction membre via une instanciation (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Erreurs et avertissements du compilateur (C++) - Index

Le programme est mal formé si une déclaration, dans une classe modèle, acquiert un type de fonction via un type dépendant d'un paramètre modèle et que ceci entraîne une déclaration n'utilisant pas le format syntaxique d'un déclarateur de fonction pour obtenir le type de fonction. Par exemple :

template<class T>
struct A {
static T t;
};
typedef int function();
A<function> a;// erreur : déclare A<function>::t
// comme fonction membre statique

Autre exemple :

Dans l'exemple ci-dessous, le membre de modèle 'a' présente un type 'T'. Si le modèle est instancié avec T comme type de fonction, cela implique que 'a' soit une fonction membre. Cela n'est pas autorisé et le message d'erreur s'affiche.

template<T& x> class foo { T a; }
int func(int);
template class foo<func>;