std:: is_bind_expression
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<functional>
|
||
|
template
<
class
T
>
struct is_bind_expression ; |
(depuis C++11) | |
Si
T
est un type produit par un appel à
std::bind
(mais pas
std::bind_front
ou
std::bind_back
), ce modèle dérive de
std::true_type
. Pour tout autre type (sauf spécialisation utilisateur), ce modèle dérive de
std::false_type
.
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::true_type
pour indiquer que
T
doit être traité par
std::bind
comme s'il s'agissait du type d'une sous-expression de liaison : lorsqu'un objet fonction généré par bind est invoqué, un argument lié de ce type sera invoqué comme un objet fonction et recevra tous les arguments non liés passés à l'objet généré par bind.
Table des matières |
Modèle de variable d'assistance
|
template
<
class
T
>
constexpr bool is_bind_expression_v = is_bind_expression < T > :: value ; |
(depuis C++17) | |
Hérité de std:: integral_constant
Constantes membres
|
value
[static]
|
true
si
T
est un objet fonction généré par
std::bind
,
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 > |
Exemple
#include <functional> #include <iostream> #include <type_traits> struct MyBind { typedef int result_type; int operator()(int a, int b) const { return a + b; } }; namespace std { template<> struct is_bind_expression<MyBind> : public true_type {}; } int f(int n1, int n2) { return n1 + n2; } int main() { // comme si bind(f, bind(MyBind(), _1, _2), 2) auto b = std::bind(f, MyBind(), 2); std::cout << "Ajouter 2 à la somme de 10 et 11 donne " << b(10, 11) << '\n'; }
Sortie :
Ajouter 2 à la somme de 10 et 11 donne 23
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2010 | C++11 |
program-defined specializations could
only be derived from std::false_type |
can be derived from
std::true_type |
Voir aussi
|
(C++11)
|
lie un ou plusieurs arguments à un objet fonction
(modèle de fonction) |