__if_exists — Instrukcja

Instrukcja __if_exists sprawdza, czy istnieje określony identyfikator.Jeśli identyfikator istnieje, wykonywany jest określony blok instrukcji.

__if_exists ( identifier ) { 
statements
};

Parametry

Parametr

Opis

identifier

Identyfikator, którego istnienie chcesz sprawdzić.

statements

Jedna lub więcej instrukcji do wykonania, jeśli identifier istnieje.

Uwagi

Informacje dotyczące przestrogiPrzestroga

Aby osiągnąć najbardziej wiarygodne wyniki, należy użyć instrukcji __if_exists pod następującymi ograniczeniami.

  • Należy stosować instrukcję __if_exists tylko do prostych typów, nie do szablonów.

  • Należy stosować instrukcję __if_exists do identyfikatorów wewnątrz lub na zewnątrz klasy.Nie należy stosować instrukcji __if_exists do zmiennych lokalnych.

  • Należy używać instrukcji __if_exists tylko w treści funkcji.Poza treścią funkcji, instrukcja __if_exists może testować tylko w pełni zdefiniowane typy.

  • Podczas testowania dla przeciążonych funkcji, nie można testować dla specyficznych form przeciążenia.

Uzupełnieniem do instrukcji __if_exists jest instrukcja __if_not_exists.

Przykład

Należy zauważyć, że w tym przykładzie użyto szablonów, które nie są zalecane.

// 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;
}

Dane wyjściowe

In X<T>::Dump()
In A::Dump()
In X<T>::Dump()
T::Dump does not exist
g_bFlag = 1
C::f exists

Zobacz też

Informacje

Instrukcje wyboru (C++)

Słowa kluczowe języka C++

__if_not_exists — Instrukcja