std::is_placeholder
Определён в заголовочном файле <functional> | ||
|---|---|---|
template< class T > struct is_placeholder; | (начиная с C++11) |
Если T является типом стандартного заполнителя (_1, _2, _3, ...), то этот шаблон наследуется от std::integral_constant<int,1>, std::integral_constant<int,2>, std::integral_constant<int,3> соответственно.
Если T не является типом стандартного заполнителя, этот шаблон наследуется от std::integral_constant<int,0>.
Программа может специализировать этот шаблон для типа, определённого программой T, чтобы реализовать UnaryTypeTrait с базовой характеристикой std::integral_constant<int,N> и положительным значением N, указывающим, что T следует рассматривать как заполнитель с номером N.
std::bind использует std::is_placeholder для обнаружения заполнителей несвязанных аргументов.
Вспомогательный шаблон переменной
template< class T > constexpr int is_placeholder_v = is_placeholder<T>::value; | (начиная с C++17) |
Наследуется от std::integral_constant
Константы-члены
|
value
[static] | значение заполнителя или 0 для типов, не являющихся типами заполнителей (общедоступная статическая константа-член) |
Функции-члены
|
operator int | преобразует объект в int, возвращает value (общедоступная функция-член) |
|
operator()
(C++14) | возвращает value (общедоступная функция-член) |
Типы-члены
| Тип | Определение |
|---|---|
value_type | int |
type | std::integral_constant<int,value> |
Пример
#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 << "Standard placeholder _5 is for the argument number "
<< std::is_placeholder_v<decltype(std::placeholders::_5)>
<< '\n';
auto b = std::bind(f, my_2, 2);
std::cout << "Adding 2 to 11 selected with a custom placeholder gives "
<< b(10, 11) // the first argument, namely 10, is ignored
<< '\n';
}
Вывод:
Standard placeholder _5 is for the argument number 5 Adding 2 to 11 selected with a custom placeholder gives 13
См. также
|
(C++11) | связывает один или несколько аргументов с функциональным объектом (шаблон функции) |
|
(C++11) | заполнители для несвязанных аргументов в выражении std::bind (константы) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/functional/is_placeholder