Podpora kompilátoru pro typové vlastnosti (C++ Component Extensions)
Kompilátor podporuje typu vlastnosti, které označují různé charakteristiky typu v čase kompilace.
Všechny knihovny runtime
Poznámky
Typ vlastnosti jsou užitečné zejména pro programátory, kteří psát knihoven.
Následující tabulka uvádí znaky typu podporované kompilátoru.Všechny textové znaky návrat false Pokud není splněna podmínka určená názvem typu znak.
(Ve sloupci Popis v tabulce jsou příklady kódu zapsány pouze v C++/CLI.Ale odpovídající typ znak je podporováno také v rozšíření komponent v jazyce Visual C++ Pokud není uvedeno jinak.Pojem, "typ platformy" označuje buď Windows Runtime typy nebo typy společného jazykového modulu runtime.)
Znak typu |
Description |
---|---|
__has_assign(type) |
Vrátí hodnotu PRAVDA platformu nebo nativní typ má operátor přiřazení kopie.
|
__has_copy(type) |
Vrátí hodnotu PRAVDA platformu nebo nativní typ má kopírovat konstruktor.
|
__has_finalizer(type) |
(Není podporováno v rozšíření komponent v jazyce Visual C++.) Vrátí hodnotu true, pokud má typ CLR finalizačních metod.Další informace naleznete v tématu Destruktory a finalizačních metod jazyka Visual C++.
|
__has_nothrow_assign(type) |
Pokud má operátor přiřazení kopie specifikaci výjimky prázdné vrátí hodnotu true.
|
__has_nothrow_constructor(type) |
Vrátí hodnotu PRAVDA specifikaci prázdné výjimka má výchozí konstruktor.
|
__has_nothrow_copy(type) |
Vrátí hodnotu true Pokud specifikaci výjimky prázdný konstruktor kopie.
|
__has_trivial_assign(type) |
Vrátí true, pokud má typ trivial, generovaných kompilátorem operátoru.
|
__has_trivial_constructor(type) |
Vrátí true, pokud má typ konstruktor trivial, generovaných kompilátorem.
|
__has_trivial_copy(type) |
Vrátí true, pokud má typ trivial, generovaných kompilátorem Kopírovat konstruktor.
|
__has_trivial_destructor(type) |
Vrátí true, pokud má typ destruktoru trivial, generovaných kompilátorem.
|
__has_user_destructor(type) |
Vrátí hodnotu PRAVDA platformu nebo nativní typ má destruktor prohlášena za uživatele.
|
__has_virtual_destructor(type) |
Vrátí hodnotu PRAVDA, pokud má typ virtuálního destruktoru. __has_virtual_destructortaké je prací na typů platformy a jakékoli destruktoru uživatelem definovaný typ platformy v virtuálního destruktoru.
|
__is_abstract(type) |
Vrátí hodnotu PRAVDA, pokud typ je abstraktní typ.Další informace o typech nativní abstraktní, viz abstract (rozšíření komponent C++). __is_abstractfunguje také pro typy platformy.Rozhraní s alespoň jeden člen je abstraktní typ jako je typ odkazu s alespoň jedním členem abstraktní.Další informace o typech abstraktní platforma vizAbstraktní třídy (C++)
|
__is_base_of(base,derived) |
Vrátí hodnotu PRAVDA, pokud první typ je základní třída druhý typ, pokud jsou oba typy stejné. __is_base_oftaké pracuje na typů platformy.Například vrátí hodnotu true, pokud je prvním typem interface class (rozšíření komponent C++) a druhý typ implementuje rozhraní.
|
__is_class(type) |
Vrací true, pokud je typem nativní třídy nebo struct.
|
__is_convertible_to(from, to) |
Vrátí hodnotu PRAVDA, pokud první typ lze převést na druhý typ.
|
__is_delegate(type) |
Vrátí hodnotu true v případě type je delegát.Další informace naleznete v tématu delegate (rozšíření komponent C++).
|
__is_empty(type) |
Pokud typ nemá žádné členy instance dat vrátí hodnotu true.
|
__is_enum(type) |
Vrátí hodnotu true pokud nativní výčtového typu.
|
__is_interface_class(type) |
Vrátí hodnotu PRAVDA, pokud předaný platformě rozhraní.Další informace naleznete v tématu interface class (rozšíření komponent C++).
|
__is_pod(type) |
Pokud je typem třídy nebo unie žádný konstruktor nebo soukromé nebo chráněné nestatický členů, žádný základní třídy a žádné virtuální funkce vrátí hodnotu true.C++ standardní, oddíly 8.5.1/1, 9/4 a 3.9/10 Další informace naleznete na lusky. __is_podVrátí hodnotu false základních typů.
|
__is_polymorphic(type) |
Nativní typ má virtuální funkce vrátí hodnotu true.
|
__is_ref_array(type) |
Vrátí hodnotu true Pokud předaný platformě array.Další informace naleznete v tématu Pole (rozšíření komponent C++).
|
__is_ref_class(type) |
Vrátí hodnotu true Pokud předán odkaz třídy.Další informace o referenční uživatelem definované typy, viz Třídy a struktury (rozšíření komponent C++).
|
__is_sealed(type) |
Vrátí hodnotu PRAVDA, pokud předaný platformě nebo nativní typ označeny uzavřených.Další informace naleznete v tématu sealed (rozšíření komponent C++).
|
__is_simple_value_class(type) |
Vrátí hodnotu PRAVDA, pokud je předán typ hodnoty, který obsahuje žádné odkazy na něho uvolněna haldy.Další informace o typech hodnota definovaná uživatelem, viz Třídy a struktury (rozšíření komponent C++).
|
__is_union(type) |
Pokud je typ unie vrátí hodnotu true.
|
__is_value_class(type) |
Vrátí hodnotu true Pokud Předaný typ hodnoty.Další informace o typech hodnota definovaná uživatelem, viz Třídy a struktury (rozšíření komponent C++).
|
Windows Runtime
Poznámky
__has_finalizer(Typu) znak typ není podporován, protože tuto platformu nepodporuje finalizačních metod.
Požadavky
Volba kompilátoru:/ZW
Common Language Runtime
Poznámky
(Nejsou žádné poznámky platformu pro tuto funkci.)
Požadavky
Volba kompilátoru:/clr
Příklady
Příklad
Následující příklad kódu ukazuje, jak použít šablonu třídy vystavit typ znak kompilátoru pro /clr kompilace.Další informace naleznete v tématu Windows Runtime a spravované šablony (rozšíření komponent C++).
// compiler_type_traits.cpp
// compile with: /clr
using namespace System;
template <class T>
ref struct is_class {
literal bool value = __is_ref_class(T);
};
ref class R {};
int main () {
if (is_class<R>::value)
Console::WriteLine("R is a ref class");
else
Console::WriteLine("R is not a ref class");
}
Výsledek