Namespaces
Variants

std:: is_placeholder

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Défini dans l'en-tête <functional>
template < class T >
struct is_placeholder ;
(depuis C++11)

Si T est le type d'un espace réservé standard (_1, _2, _3, ...) , alors ce modèle est dérivé de std:: integral_constant < int , 1 > , std:: integral_constant < int , 2 > , std:: integral_constant < int , 3 > , respectivement.

Si T n'est pas un type de substitution standard, ce modèle est dérivé de std:: integral_constant < int , 0 > .

Un programme peut spécialiser ce modèle pour un type défini par le programme T afin d'implémenter UnaryTypeTrait avec une caractéristique de base de std:: integral_constant < int , N > avec un N positif pour indiquer que T doit être traité comme le N ième type de substitution.

std::bind utilise std::is_placeholder pour détecter les espaces réservés pour les arguments non liés.

Table des matières

Modèle de variable d'assistance

template < class T >
constexpr int is_placeholder_v = is_placeholder < T > :: value ;
(depuis C++17)

Hérité de std:: integral_constant

Constantes membres

value
[static]
valeur de substitution ou 0 pour les types non-substitution
(constante membre publique statique)

Fonctions membres

operator int
convertit l'objet en int , retourne value
(fonction membre publique)
operator()
(C++14)
retourne value
(fonction membre publique)

Types membres

Type Définition
value_type int
type std:: integral_constant < int , value >

Exemple

#include <functional>
#include <iostream>
#include <type_traits>
struct My_2 {} my_2;
namespace std
{
    template<>
    struct is_placeholder<My_2> : public integral_constant<int, 2> {};
}
int f(int n1, int n2)
{
    return n1 + n2;
}
int main()
{
    std::cout << "Le placeholder standard _5 correspond au numéro d'argument "
              << std::is_placeholder_v<decltype(std::placeholders::_5)>
              << '\n';
    auto b = std::bind(f, my_2, 2);
    std::cout << "Ajouter 2 à 11 sélectionné avec un placeholder personnalisé donne " 
              << b(10, 11) // le premier argument, à savoir 10, est ignoré
              << '\n';
}

Sortie :

Standard placeholder _5 is for the argument number 5
Adding 2 to 11 selected with a custom placeholder gives 13

Voir aussi

(C++11)
lie un ou plusieurs arguments à un objet fonction
(modèle de fonction)
espaces réservés pour les arguments non liés dans une expression std::bind
(constante)