std:: is_placeholder
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<functional>
|
||
|
template
<
class
T
>
struct is_placeholder ; |
(desde C++11) | |
Si
T
es el tipo de un marcador de posición estándar
(_1, _2, _3, ...)
, entonces esta plantilla se deriva de
std::
integral_constant
<
int
,
1
>
,
std::
integral_constant
<
int
,
2
>
,
std::
integral_constant
<
int
,
3
>
, respectivamente.
Si
T
no es un tipo de marcador de posición estándar, esta plantilla deriva de
std::
integral_constant
<
int
,
0
>
.
Un programa puede especializar esta plantilla para un
tipo definido por el programa
T
para implementar
UnaryTypeTrait
con característica base de
std::
integral_constant
<
int
, N
>
con un
N
positivo para indicar que
T
debe tratarse como el
N
º
tipo de marcador de posición.
std::bind
utiliza
std::is_placeholder
para detectar marcadores de posición para argumentos no vinculados.
Contenidos |
Plantilla de variable auxiliar
|
template
<
class
T
>
constexpr int is_placeholder_v = is_placeholder < T > :: value ; |
(desde C++17) | |
Heredado de std:: integral_constant
Constantes miembro
|
value
[static]
|
valor de marcador de posición o
0
para tipos que no son marcadores de posición
(constante miembro pública estática) |
Funciones miembro
|
operator int
|
convierte el objeto a
int
, devuelve
value
(función miembro pública) |
|
operator()
(C++14)
|
devuelve
value
(función miembro pública) |
Tipos miembro
| Tipo | Definición |
value_type
|
int |
type
|
std:: integral_constant < int , value > |
Ejemplo
#include <functional> #include <iostream> #include <type_traits> struct My_2 {} my_2; namespace std { template<> struct is_placeholder<My_2> : public integral_constant<int, 2> {}; } int f(int n1, int n2) { return n1 + n2; } int main() { std::cout << "El placeholder estándar _5 es para el número de argumento " << std::is_placeholder_v<decltype(std::placeholders::_5)> << '\n'; auto b = std::bind(f, my_2, 2); std::cout << "Sumar 2 a 11 seleccionado con un placeholder personalizado da " << b(10, 11) // el primer argumento, es decir 10, se ignora << '\n'; }
Salida:
El placeholder estándar _5 es para el número de argumento 5 Sumar 2 a 11 seleccionado con un placeholder personalizado da 13
Véase también
|
(C++11)
|
vincula uno o más argumentos a un objeto función
(plantilla de función) |
|
(C++11)
|
marcadores de posición para los argumentos no vinculados en una expresión
std::bind
(constante) |