std:: is_placeholder
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
定义于头文件
<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
特化此模板,以实现具有
std::
integral_constant
<
int
, N
>
基础特征的
UnaryTypeTrait
,其中正数
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 << "标准占位符 _5 对应的参数序号为 " << std::is_placeholder_v<decltype(std::placeholders::_5)> << '\n'; auto b = std::bind(f, my_2, 2); std::cout << "使用自定义占位符将 2 与 11 相加得到 " << b(10, 11) // 第一个参数(即 10)被忽略 << '\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
表达式中未绑定参数的占位符
(常量) |