std::is_bind_expression
From cppreference.com
                    
                                        
                    < cpplrm; | utilitylrm; | functional
                    
                                                            
                    | Defined in header  <functional> | ||
| template< class T > struct is_bind_expression; | (since C++11) | |
If T is the type produced by a call to std::bind, this template is derived from std::true_type.  For any other type, this template is derived from std::false_type.
This template may be specialized for a user-defined type T to implement UnaryTypeTrait with BaseCharacteristic of std::true_type to indicate that T should be treated by std::bind as if it were the type of a bind subexpression: when a bind-generated function object is invoked, a bound argument of this type will be invoked as a function object and will be given all the unbound arguments passed to the bind-generated object.
Helper variable template
| template< class T > inline constexpr bool is_bind_expression_v = is_bind_expression<T>::value; | (since C++17) | |
Inherited from std::integral_constant
Member constants
| value [static] | true if Tis a function object generated by std::bind, false otherwise(public static member constant) | 
Member functions
| operator bool | converts the object to bool, returns value(public member function) | 
| operator() (C++14) | returns value(public member function) | 
Member types
| Type | Definition | 
| value_type | bool | 
| type | std::integral_constant<bool, value> | 
Example
Run this code
#include <iostream> #include <type_traits> #include <functional> 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() { // as if bind(f, bind(MyBind::operator(), _1, _2), 2) auto b = std::bind(f, MyBind(), 2); std::cout << "Adding 2 to the sum of 10 and 11 gives " << b(10, 11) << '\n'; }
Output:
Adding 2 to the sum of 10 and 11 gives 23
See also
| (C++11) | binds one or more arguments to a function object (function template) |