std::is_placeholder
De es.cppreference.net
| 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 se 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 N positivo para indicar que T debe ser tratado como el tipo de marcador de posición N-ésimo.
std::bind utiliza std::is_placeholder para detectar marcadores de posición para argumentos no vinculados.
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
Ejecutar este código
#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) |