Namespaces
Variants

std:: is_bind_expression

From cppreference.net
Utilities library
Function objects
Partial function application
(C++20) (C++23)
(C++11)
is_bind_expression
(C++11)
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* )
Definido en el encabezado <functional>
template < class T >
struct is_bind_expression ;
(desde C++11)

Si T es un tipo producido por una llamada a std::bind (pero no std::bind_front o std::bind_back ), esta plantilla deriva de std::true_type . Para cualquier otro tipo (a menos que esté especializado por el usuario), esta plantilla deriva de std::false_type .

Un programa puede especializar esta plantilla para un tipo definido por el programa T para implementar UnaryTypeTrait con característica base de std::true_type para indicar que T debe ser tratado por std::bind como si fuera el tipo de una subexpresión de enlace: cuando se invoca un objeto función generado por bind, un argumento vinculado de este tipo será invocado como un objeto función y recibirá todos los argumentos no vinculados pasados al objeto generado por bind.

Contenidos

Plantilla de variable auxiliar

template < class T >
constexpr bool is_bind_expression_v = is_bind_expression < T > :: value ;
(desde C++17)

Heredado de std:: integral_constant

Constantes miembro

value
[static]
true si T es un objeto función generado por std::bind , false en caso contrario
(constante miembro pública estática)

Funciones miembro

operator bool
convierte el objeto a bool , devuelve value
(función miembro pública)
operator()
(C++14)
devuelve value
(función miembro pública)

Tipos miembro

Tipo Definición
value_type bool
type std:: integral_constant < bool , value >

Ejemplo

#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()
{
    // como si fuera bind(f, bind(MyBind(), _1, _2), 2)
    auto b = std::bind(f, MyBind(), 2); 
    std::cout << "Sumar 2 a la suma de 10 y 11 da " << b(10, 11) << '\n';
}

Salida:

Sumar 2 a la suma de 10 y 11 da 23

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2010 C++11 las especializaciones definidas por el programa solo
podían derivarse de std::false_type
pueden derivarse de
std::true_type

Véase también

(C++11)
vincula uno o más argumentos a un objeto de función
(plantilla de función)