[Boost基础]函数与回调——result_of返回函数的返回值类型
2013-01-21 19:54
441 查看
函数与回调
函数与回调时Boost中较为高级复杂的组件,应用了C++中高级的语言特性和技巧,功能很强大,相应的用法也比较复杂,灵活,不太容易理解和掌握。Result_of:使用了复杂的技巧来自动推导函数的返回值类型
Ref:可以包装对象的引用,在传递参数时消除对象拷贝的代价,或者将不可拷贝的对象变为可以拷贝
Bind:是C++98标准库中函数适配器的增量,可以适配任意的可调用对象,包括函数指针,函数引用和函数对象,把它们变成一个新的函数对象,它是迈向C++函数式编程的第一步。
Function:是对C++中函数指针类型的增量,它能够容纳任意的可调用对象,可以配合bind使用。
Signals2:它实现了威力强大的观察者模式。
result_of
#pragma once #include <boost/utility/result_of.hpp> #include <string> #include <iostream> #include <conio.h> using namespace std; using namespace boost; //result_of:返回函数的返回值类型 void test1() { typedef double (*Func)(double d);//定义一个函数指针类型Func(既然是类型,就可以定义变量),它接受一个double类型的参数,返回类型为double Func func=sqrt;//定义了func变量 result_of<Func(double)>::type x=func(5.0); cout<<x<<" "<<typeid(x).name()<<endl; //2.23607 double //result_of虽然很小,但它用到了很多C++的高级特性,如模板偏特化和sfinae,并且部分依赖于编译器的能力。它不仅可以用于函数指针,更重要的是用于函数对象进行泛型编程。 } void test(char t) { cout<<"press key====="<<t<<endl; switch (t) { case '1':test1();break; // case '2':test2();break; // case '3':test3();break; // case '4':test4();break; case 27: case 'q':exit(0);break; default: cout<<"default "<<t<<endl;break; } } int main() { while(1) { test(getch()); } return 0; }
网上实例
相关文章推荐
- boost—— 函数与回调result_of小工具类
- C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)
- C++基础---有返回值类型函数(指针函数)
- [Boost基础]函数与回调——ref引用
- [Boost基础]函数与回调——ref引用
- [Boost基础]函数与回调——function函数
- JavaSE8基础 函数的返回类型是接口
- C++基础---函数的返回类型
- [Boost基础]函数与回调——bind绑定
- C++基础---有返回值类型函数(返回非引用类型)
- Hibernate的count(*)函数通过调用uniqueResult方法的返回值类型
- C++基础---有返回值类型函数(返回引用类型)
- C#控制台基础 out类型的意义,函数需要返回不同类型的值
- AIDL实现不同应用之间跨进程通讯及传递与返回各种数据类型和远程接口回调
- Oracle数据库基础(二)--数据类型,约束,oracle函数
- oracle函数返回table类型结果集
- 函数返回类型
- 函数返回类型为 指针类型
- 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
- 返回引用类型的函数