码迷,mamicode.com
首页 > 编程语言 > 详细

代码中C++11一些新的特性

时间:2017-04-13 18:36:23      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:写法   person   返回值   成员变量   参数   put   特性   决定   output   

 

通过result_of
multimap<typename std::result_of<Fn(Person)>::type, Person>
std::result_of<Fn(Arg)>::type可以获取function的返回值,没有魔法数,也没有declval繁琐的写法,很优雅。其实,查看源码就知道result_of内部就是通过declval实现的,作法和方式二一样,只是简化了写法。

 

std::function<int(int)> fr2,那么fr2就可以代表返回值和参数表相同的一类函数。

std::bind用来将可调用对象与其参数一起进行绑定。绑定后可以使用std::function进行保存,并延迟到我们需要的时候调用:
  (1) 将可调用对象与其参数绑定成一个仿函数;
  (2) 可绑定部分参数。
  在绑定部分参数的时候,通过使用std::placeholders来决定空位参数将会是调用发生时的第几个参数。
A a;
    // 绑定成员函数,保存为仿函数
    std::function<void(int, int)> fr = std::bind(&A::output, &a, std::placeholders::_1, std::placeholders::_2);
    // 调用成员函数
    fr(1, 2);

    // 绑定成员变量
    std::function<int&(void)> fr2 = std::bind(&A::i_, &a);
    fr2() = 100;// 对成员变量进行赋值
    std::cout << a.i_ << std::endl;

 

代码中C++11一些新的特性

标签:写法   person   返回值   成员变量   参数   put   特性   决定   output   

原文地址:http://www.cnblogs.com/ph829/p/6705394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!