result_of学习
来源:互联网 发布:paxos算法推导 编辑:程序博客网 时间:2024/05/11 22:29
result_of是一个小但很有用的组件,可以帮助程序员确定一个调用表达式的返回类型,主要用于泛型编程和其他Boost库组件,它已被收入TR1。
result_of位于名字空间boost,为了使用result_of组件,需要包含头文件<boost/utility/result_of.hpp>,即:
#include<boost/utility/result_of.hpp>
using namespace boost;
一般来说result_of在一般编程中很少会被使用到,可能会在一些模板封装里面由于对模板要处理的类型不能够确定,可以使用这个其来辅助处理,避免了算法相同,就因为对函数类型不能够确定而麻烦地分开写。下面是result_of使用例子:
#include <iostream>#include <string>#include <boost/utility/result_of.hpp>using namespace std;using namespace boost;template<class type>type square(type x) { return x; }int square(int x) { x = 11; return (x * x); }template<class Fun, class Arg> void test_result(const Fun& fun, Arg arg) { typename boost::result_of<Fun(Arg)>::type val = fun(arg); std::cout << "val == " << val << std::endl; }typedef int (*TiSquare)(int);typedef double (*TdSquare)(double);typedef float (*TfSquare)(float);typedef string (*TsSquare)(string);void main(){//square<double>(2);int x = 2;test_result<TiSquare,int>(&square,x); double y = 4.4;test_result<TdSquare,double>(&square,y);float z = 4.3f;test_result<TfSquare,float>(&square,z);string w = "abcdefg";test_result<TsSquare,string>(&square,w);}
结果:
val == 121val == 4.4val == 4.3val == abcdefg请按任意键继续. . .
- result_of学习
- result_of SFINAE
- boost result_of
- std::result_of用法
- result_of,declval,decltype的用法
- boost中result_of简单使用
- C++11 result_of函数的使用
- boost------result_of的使用(Boost程序库完全开发指南)读书笔记
- [Boost基础]函数与回调——result_of返回函数的返回值类型
- C++11:使用 auto/decltype/result_of使代码可读易维护
- C++11:使用 auto/decltype/result_of使代码可读易维护
- boost—— 函数与回调result_of小工具类
- 学习
- 学习
- 学习
- 学习
- 学习
- 学习
- Android 面试题
- WinCE7系统事件通知
- Win7下自解压Emeditor 10
- Tomcat处理HTTP请求源码分析(上)
- Tomcat处理HTTP请求源码分析(下)
- result_of学习
- cancan 笔记
- projection matrix
- android第二十天——手势识别
- 使用 Android NDK Stand-alone 交叉编译工具
- Selenium
- 高效 JavaScript
- 终于把工作给定了
- Apache Mahout 简介