Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

function::target_type

公共成员函数  <functional>

const type_info& target_type() const noexcept;

目标内部类型
返回标识target类型的type_info对象。

该函数的返回值与将typeid操作符应用于target的可调用对象的类型相同。

如果对象没有target(例如,它是一个空函数),这个函数返回typeid(void)。

请注意,function的单一类型实例化可以使用相同的调用签名保存不同的目标类型: 例如,相同的function对象可以保存指向函数或函数对象的指针。

☲  参数


none

☉  返回值



对应于target类型的type_info对象,如果对象是空函数,则为typeid(void)。
Type_info是在头文件<typeinfo>中定义的类型,可用于比较类型。

☣  示例



// function::target_type example
#include <iostream>     // std::cout, std::boolalpha
#include <functional>   // std::function, std::plus, std::minus
#include <typeinfo>     // typeid

int  plus_function(int a, int b) {return a+b;}
int minus_function(int a, int b) {return a-b;}

int main () {
  std::function<int(int,int)> plus1  = plus_function;
  std::function<int(int,int)> plus2  = std::plus<int>();
  std::function<int(int,int)> minus1 = minus_function;
  std::function<int(int,int)> minus2 = std::minus<int>();

  std::cout << "pointers as targets:\n" << std::boolalpha;
  std::cout << "plus1 : " << ( plus1.target_type()==typeid(int(*)(int,int))) << '\n';
  std::cout << "plus2 : " << ( plus2.target_type()==typeid(int(*)(int,int))) << '\n';
  std::cout << "minus1: " << (minus1.target_type()==typeid(int(*)(int,int))) << '\n';
  std::cout << "minus2: " << (minus2.target_type()==typeid(int(*)(int,int))) << '\n';
  std::cout << '\n';

  std::cout << "same type?:\n";
  std::cout << "(plus1, plus2) : " << ( plus1.target_type()== plus2.target_type()) << '\n';
  std::cout << "(minus1,minus2): " << (minus1.target_type()==minus2.target_type()) << '\n';
  std::cout << "(plus1, minus1): " << ( plus1.target_type()==minus1.target_type()) << '\n';
  std::cout << "(plus2, minus2): " << ( plus2.target_type()==minus2.target_type()) << '\n';

  return 0;
}

输出:
pointers as targets:
plus1 : true
plus2 : false
minus1: true
minus2: false

same type?:
(plus1, plus2) : false
(minus1,minus2): false
(plus1, minus1): true
(plus2, minus2): false

⇄ 数据竞争



对象被访问。

☂ 异常安全性



无抛出保证:该成员函数从不抛出异常。

🍄  另请参阅



function::target 获取指向目标的指针(公共成员函数)
function::operator bool 检查是否可调用(公共成员函数)

联系我们 免责声明 关于CandCplus 网站地图