c++11 tuple

c++11新增了tuple类型,它可以容纳不定数量的类型变量,像一个更加易用的简化版struct。 tuple不是寻常的容器,它不能用迭代器去遍历。get的值需要编译期就确定,因此也不能用index下标变量去遍历: 虽然不能用一般的方式的遍历tuple,但可以用不定参数的模板在编译期去递归获取每个参数。一下是个例子来打印tuple的值。 tuple里面的类型可以是引用类型。 使用tie,可以方便的从tuple中提取出值来: 还可以用std::ignore忽略提取某些值: 第一次看到tie的时候觉得很神奇,为么tie能够的提取tuple中的值呢?答案很简单,tie根据参数建立了一个临时的参数引用类型tuple,然后重载了=操作,再利用不定参数模板来遍历另一个tuple中的值。 ... Read More | Share it now!

c++11 Lambda表达式

c++11引入了Lambda表达式,用于定义并创建匿名的函数对象,以简化编程工作。 最简单的Lambda表达式如这样: 也可以在定义的时候直接调用: 或者把它传递给一个变量,再调用,可以多次调用: 完整的lambda表示格式如下: 中括号里是指明要捕获的外部作用域的变量。 小括号是传递给lambda表达式的参数。 mutable修饰符,可以修改按值传递进来的拷贝(注意是能修改拷贝,而不是值本身)。 exception声明用于指定函数抛出的异常,如抛出整数类型的异常,可以使用throw(int)。 ->返回值类型,标识函数返回值的类型,当返回值为void,或者函数体中只有一处return的地方(此时编译器可以自动推断出返回值类型)时,这部分可以省略。 大括号就是函数体了。 捕获参数 lambda表达式中括号是用来捕获外部作用域的变量的: [],不捕获任何外部作用域变量。 ,按值传递的方式捕获所有外部作用域的变量。 ,按引用传递的方式捕获所有外部作用域的变量。 ,个别的指明值的捕获方式。 ,y按引用传递,其他按值传递。 ,y按值传递,其他按引用传递。 mutable修饰符可以对值传递的变量进行修改,并保存状态: lambda的类型,是个匿名的函数对象。每个lambda表达式的类型都是独一无二的。但可用std::function<>模版接受一个一般化的lambda:   ... Read More | Share it now!

c++11语言新特性

template表达式内的空格 在两个template表达式的闭符之间放一个空格的要求已经过时了,以下两种写法都正确。 nullptr和std::nullptr_t c++11鼓励使用nullptr来取代0或者NULL来表示空指针。这个特性可以避免把一个空指针解释成一个整形值,比如: nullptr是个新关键字。它被自动转换为各种pointer类型,但不会转换为整形值。它是std::nullptr_t类型。 auto类型 c++11允许你声明一个变量而不需要指明它的类型,只需要说它是auto类型。然后它的类型会根据其初值自动推导出来。这意味这auto类型变量就需要马上初始化。 auto变量自动推导类型,大大简化了我们的编程工作。 一致性初始化与初值列 c++有多种初始化变量的方法,比如大括号,赋值操作符,小括号。为此c++11引入一个一致性初始化的概念,任何类型都可以用大括号来初始化。 空的初始列会别初始化为0或者nullptr,比如: 用大括号初始化值不能窄化。 c++标准库提供了一个std::initializer_list来支持一系列值进行初始化。 for循环 c++... Read More | Share it now!

Chromium进程模型

http://dev.chromium.org/developers/design-documents/process-models SiteInstance SiteInstance表示着一组之间有脚本联系的网页,从第一个网页开始,通过点击它页面上的超链接或者脚本代码打开的网页都属于同一个SiteInstance。比如用js... Read More | Share it now!