[func.bind.isplace]

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

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

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

#### 22.10.15.3 Class template is_placeholder [func.bind.isplace]

[ð](#lib:is_placeholder)

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

[1](#1)

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

The class template is_placeholder can be used to detect the standard placeholders_1, _2, and so on ([[func.bind.place]](func.bind.place "22.10.15.5 Placeholders"))[.](#1.sentence-1)

The function template bind usesis_placeholder to detect placeholders[.](#1.sentence-2)

[2](#2)

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

Specializations of the is_placeholder 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 the base characteristic ofintegral_constant<int, *J*> if T is the type ofstd​::​placeholders​::​_*J*, otherwise it has a
base characteristic of integral_constant<int, 0>[.](#2.sentence-2)

A program
may specialize this template for a program-defined type T to
have a base characteristic of integral_constant<int, N> with N > 0 to indicate that T should be
treated as a placeholder type[.](#2.sentence-3)
