[func.bind.isbind]

# 22 General utilities library [[utilities]](./#utilities)

## 22.10 Function objects [[function.objects]](function.objects#func.bind.isbind)

### 22.10.15 Function object binders [[func.bind]](func.bind#isbind)

#### 22.10.15.2 Class template is_bind_expression [func.bind.isbind]

[ð](#lib:is_bind_expression)

namespace std {template<class T> struct is_bind_expression; // see below}

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L13345)

The class template is_bind_expression can be used to detect function objects
generated by bind[.](#1.sentence-1)

The function template bind uses is_bind_expression to detect subexpressions[.](#1.sentence-2)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L13350)

Specializations of the is_bind_expression template shall meet
the [*Cpp17UnaryTypeTrait*](meta.rqmts#:Cpp17UnaryTypeTrait "21.3.2 Requirements [meta.rqmts]") requirements ([[meta.rqmts]](meta.rqmts "21.3.2 Requirements"))[.](#2.sentence-1)

The implementation
provides a definition that has a base characteristic oftrue_type if T is a type returned from bind,
otherwise it has a base characteristic of false_type[.](#2.sentence-2)

A program may specialize this template for a program-defined type T to have a base characteristic of true_type to indicate thatT should be treated as a subexpression in a bind call[.](#2.sentence-3)
