Namespaces
Variants

std::is_bind_expression

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (deprecado en C++20)
 
Objetos función
Invocación de funciones
(C++17)(C++23)
Objeto función identidad
(C++20)
Envoltorios de operadores transparentes
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Vinculadores y adaptadores antiguos
(hasta C++17*)
(hasta C++17*)
(hasta C++17*)
(hasta C++17*)  
(hasta C++17*)
(hasta C++17*)(hasta C++17*)(hasta C++17*)(hasta C++17*)
(hasta C++20*)
(hasta C++20*)
(hasta C++17*)(hasta C++17*)
(hasta C++17*)(hasta C++17*)

(hasta C++17*)
(hasta C++17*)(hasta C++17*)(hasta C++17*)(hasta C++17*)
(hasta C++20*)
(hasta 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 a std::bind_front o std::bind_front), esta plantilla se deriva de std::true_type. Para cualquier otro tipo (a menos que sea especializado por el usuario), esta plantilla se 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 bind: cuando se invoca un objeto función generado por bind, un argumento vinculado de este tipo será invocado como un objeto función y se le darán todos los argumentos no vinculados pasados al objeto generado por bind.

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)