C++11标准里有动态模板参数已经是众所周知的事儿了。但是当时还有个主流编译器还不支持。 但是现在,主要的编译器。VC(Windows),GCC(Windows,Linux),Clang(Mac,IOS)都已经支持了。所以就可以准备用于生产环境了。 type_traits没啥好说的。主要是一些静态检测。主要还是要看动态模板参数和他们两的结合使用上。 动态模版参数标准文档见: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf 和 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf 虽然贴出来了。估计是没人看得。所以就直接说重点。
用过std和boost的function对象和bind函数的童鞋们都知道这玩意用起来腰不酸了,腿不疼了,心情也舒畅了。先上一个简单得示例:
std::string str;
std::function<bool()> func = std::bind(&std::string::at, &str);
bool is_empty = func();但是这是怎么做到的呢?看完源码以后,你会发现这里面有着一些很巧妙的设计。
C++11的新标准已经出台,各个编译器已经开始陆续支持。 主流编译器支持程度见(VC++, gcc, clang, intel c++等):http://en.cppreference.com/w/cpp/compiler_support
但是要让C++11应用与生产环境还需时日,所以就在这里记录一下在过渡时期可能用到的一些重要功能
这各部分主要是一些很实用和在一些地方帮助编译器自动推断类型的库和函数 首先是引用包装 类名 template< class T > class std::reference_wrapper; 这个类保存了对一个类实例、(成员)函数(指针) 构造时必须传入所引用的对象或引用对象的右值引用 主要方法有 =号操作符, 用于重新绑定引用对象 类型转换操作符, 用于转换为模板目标类的引用类型 get方法, 用于获取引用的对象 ()操作符, 用于执行引用的函数
绑定函数是我认为C++新标准里第二有用的库了 绑定库的使用环境是:
- GCC-C++ 4.3 及以上
- Visual Studio 2008 SP1 及以上
- BOOST 1.25及以上(其中function是1.16及以上)
先来看一段代码
#include <iostream>
#include <cstdio>
#include <memory>
#include <functional>
class button
{
public:
std::function<void(int)> onClick;
};
class player
{
public:
void play(void* sender, int param) {
printf("Play: %d => %d\n", (int)sender, param);
};
void stop(void*…C++ STL终于会放点实用的东西了。可喜可贺。
这个,显然是正则表达式库,作为一个强大而又NB的库,我表示对其理解甚少,只能先研究下基本用法,更具体的用法要等实际应用中用到的时候在细看了。 PS:正则表达式的资料见 http://www.regexlab.com/ 更多资料见 https://www.owent.net/2011/264.html
这回的两个库没怎么用过,这里的记录就用VC++写了,使用G++和BOOST的时候和智能指针类似。
首先是Tuple库
要注意的是这里G++,VC++和BOOST库的函数不太一样,所以使用的时候要注意没有使用到编译器和编译器相关的函数(特别是IDE的弹窗的方法要注意)。
C++ 0x/11 终于通过了,真是个很爽的消息。于是乎我决定对新的东西系统学习一下。
首先当然要从tr1开始,智能指针实际上我已经用过很多次了,但是为了完整起见,还是写出来记录一下。
当然,从简单到复杂,现在接触的部分不是很复杂,不过暂时够用了。