std:: is_pointer
|
Défini dans l'en-tête
<type_traits>
|
||
|
template
<
class
T
>
struct is_pointer ; |
(depuis C++11) | |
std::is_pointer
est un
UnaryTypeTrait
.
Vérifie si
T
est un
pointeur vers un objet ou une fonction
(y compris un pointeur vers
void
, mais excluant les pointeurs vers membres) ou une version qualifiée cv de celui-ci. Fournit la constante membre
value
qui est égale à
true
, si
T
est un type pointeur vers objet/fonction. Sinon,
value
est égale à
false
.
Si le programme ajoute des spécialisations pour
std::is_pointer
ou
std::is_pointer_v
, le comportement est indéfini.
Table des matières |
Paramètres du modèle
| T | - | un type à vérifier |
Modèle de variable d'assistance
|
template
<
class
T
>
constexpr bool is_pointer_v = is_pointer < T > :: value ; |
(depuis C++17) | |
Hérité de std:: integral_constant
Constantes membres
|
value
[static]
|
true
si
T
est un type pointeur,
false
sinon
(constante membre publique statique) |
Fonctions membres
|
operator bool
|
convertit l'objet en
bool
, retourne
value
(fonction membre publique) |
|
operator()
(C++14)
|
retourne
value
(fonction membre publique) |
Types membres
| Type | Définition |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
Implémentation possible
template<class T> struct is_pointer : std::false_type {}; template<class T> struct is_pointer<T*> : std::true_type {}; template<class T> struct is_pointer<T* const> : std::true_type {}; template<class T> struct is_pointer<T* volatile> : std::true_type {}; template<class T> struct is_pointer<T* const volatile> : std::true_type {}; |
` n'a pas été traduit conformément aux instructions, car il contient des termes spécifiques au C++ et du code source qui doit rester inchangé pour préserver sa fonctionnalité et sa précision technique.
Exemple
#include <type_traits> int main() { struct A { int m; void f() {} }; int A::*mem_data_ptr = &A::m; // un pointeur vers un membre de données void (A::*mem_fun_ptr)() = &A::f; // un pointeur vers une fonction membre static_assert( ! std::is_pointer<A>::value && ! std::is_pointer_v<A> // même chose que ci-dessus, mais en C++17 ! && ! std::is_pointer<A>() // identique à ci-dessus, utilisant l'opérateur bool hérité && ! std::is_pointer<A>{} // idem && ! std::is_pointer<A>()() // identique à ci-dessus, utilisant l'opérateur() hérité && ! std::is_pointer<A>{}() // idem && std::is_pointer_v<A*> && std::is_pointer_v<A const* volatile> && ! std::is_pointer_v<A&> && ! std::is_pointer_v<decltype(mem_data_ptr)> && ! std::is_pointer_v<decltype(mem_fun_ptr)> && std::is_pointer_v<void*> && ! std::is_pointer_v<int> && std::is_pointer_v<int*> && std::is_pointer_v<int**> && ! std::is_pointer_v<int[10]> && ! std::is_pointer_v<std::nullptr_t> && std::is_pointer_v<void (*)()> ); }
Voir aussi
|
(C++11)
|
vérifie si un type est un pointeur vers une fonction membre non statique ou un objet
(modèle de classe) |
|
(C++11)
|
vérifie si un type est un pointeur vers un objet membre non statique
(modèle de classe) |
|
(C++11)
|
vérifie si un type est un pointeur vers une fonction membre non statique
(modèle de classe) |
|
(C++11)
|
vérifie si un type est un type tableau
(modèle de classe) |
|
(C++11)
|
vérifie si un type est un type scalaire
(modèle de classe) |