C++11

1. 编译期计算 我们先来看一段求阶乘(factorial)的算法: size_t factorial(size_t n) noexcept { return (n == 0) ? 1 : n * factorial(n - 1); } 很明显,这是一段运行期算法。程序运行的时候,传递一个值,它可以是一个变...

发布 0 条评论

在C++中,存在“可调用对象(callable objects)”这么一个概念。这里我直接摘录C++11标准《ISO/IEC 14882:2011》,§ 20.8.1 Definitions: A callable type is a function object type (20.8) or a pointer to member. A callable obje...

发布 0 条评论

这篇文的草稿我是在2014年5月11号开始打的,可是拖拖拉拉直到现在才真正动笔写,自己对自己也是醉了。。 之所以写bind而不是什么其他的东西,是因为bind在各种C++的utility里面可以说是最能体现出“利用语言本身来拓展语言功能”这一特...

发布 0 条评论

1. 内存对齐(Data Structure Alignment)是什么 内存对齐,或者说字节对齐,是一个数据类型所能存放的内存地址的属性(Alignment is a property of a memory address)。 这个属性是一个无符号整数,并且这个整数必须是2的N次方(1、...

发布 5 条评论

群里有个朋友要实现这么一个功能:如何在编译期把一个函数类型的参数减少一个。 简单来说,就是实现下面这个模板: remove_func_par::type; // type = void(int, long) 根据输入的编译期整数,把函数参数表里对应的参数干掉一个。 为...

发布 0 条评论

在C++98/03的泛型编程中,模板实例化有个很恼人的地方。那就是连续的两个右尖括号(>>)会被编译器解释成右移操作符,而不是模板参数表的结束。 让我们来看看下面这个例子: template struct Foo { typedef T type; }; template...

发布 0 条评论

拖了又拖,终于痛下决心写这篇文了……因为自己太懒,博客里的内容一直捉襟见肘,实在是说不过去啊。 闲话少叙,还是赶快进入正题吧。 话说在C++里一直有一个比较头疼的问题,那就是在函数调用函数的时候,如何正确的传递参数。 考虑下...

发布 0 条评论