__if_exists, instruction
L’instruction __if_exists
teste si l’identificateur spécifié existe. Si l'identificateur existe, le bloc d'instructions spécifié est exécuté.
Syntaxe
__if_exists ( identifier ) {
statements
};
Paramètres
identifier
Identificateur dont vous voulez tester l'existence.
Déclarations
Une ou plusieurs instructions à exécuter si l’identificateur existe.
Notes
Attention
Pour obtenir les résultats les plus fiables, utilisez l’instruction __if_exists
sous les contraintes suivantes.
Appliquez l’instruction
__if_exists
aux types simples, et non aux modèles.Appliquez l’instruction aux identificateurs à l’intérieur
__if_exists
ou à l’extérieur d’une classe. N’appliquez pas l’instruction__if_exists
aux variables locales.Utilisez l’instruction
__if_exists
uniquement dans le corps d’une fonction. En dehors du corps d’une fonction, l’instruction__if_exists
peut tester uniquement les types entièrement définis.Lorsque vous vérifiez la présence de fonctions surchargées, vous ne pouvez pas effectuer le test sur une forme spécifique de la surcharge.
Le complément de l’instruction __if_exists
est l’instruction __if_not_exists.
Exemple
Notez que cet exemple utilise des modèles, ce qui n'est pas recommandé.
// the__if_exists_statement.cpp
// compile with: /EHsc
#include <iostream>
template<typename T>
class X : public T {
public:
void Dump() {
std::cout << "In X<T>::Dump()" << std::endl;
__if_exists(T::Dump) {
T::Dump();
}
__if_not_exists(T::Dump) {
std::cout << "T::Dump does not exist" << std::endl;
}
}
};
class A {
public:
void Dump() {
std::cout << "In A::Dump()" << std::endl;
}
};
class B {};
bool g_bFlag = true;
class C {
public:
void f(int);
void f(double);
};
int main() {
X<A> x1;
X<B> x2;
x1.Dump();
x2.Dump();
__if_exists(::g_bFlag) {
std::cout << "g_bFlag = " << g_bFlag << std::endl;
}
__if_exists(C::f) {
std::cout << "C::f exists" << std::endl;
}
return 0;
}
Sortie
In X<T>::Dump()
In A::Dump()
In X<T>::Dump()
T::Dump does not exist
g_bFlag = 1
C::f exists
Voir aussi
Instructions de sélection
Mots clés
__if_not_exists, instruction
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour