C++的杂七杂八:萃取函数(可调用体)的各种属性
在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...
在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...
这篇文的草稿我是在2014年5月11号开始打的,可是拖拖拉拉直到现在才真正动笔写,自己对自己也是醉了。。 之所以写bind而不是什么其他的东西,是因为bind在各种C++的utility里面可以说是最能体现出“利用语言本身来拓展语言功能”这一特...
地球人都知道C++里有一个typeid操作符可以用来获取一个类型/表达式的名称: std::cout
在C++98/03的泛型编程中,模板实例化有个很恼人的地方。那就是连续的两个右尖括号(>>)会被编译器解释成右移操作符,而不是模板参数表的结束。 让我们来看看下面这个例子: template struct Foo { typedef T type; }; template...
拖了又拖,终于痛下决心写这篇文了……因为自己太懒,博客里的内容一直捉襟见肘,实在是说不过去啊。 闲话少叙,还是赶快进入正题吧。 话说在C++里一直有一个比较头疼的问题,那就是在函数调用函数的时候,如何正确的传递参数。 考虑下...
最近在考虑写一个可以跨平台的通用字符串类,首先需要搞定的就是编码转换问题。 vs默认保存代码文件,使用的是本地code(中文即GBK,日文即Shift-JIS),也可以使用带BOM的UTF-8。 gcc则是UTF-8,有无BOM均可(源代码的字符集可以由参...
现在我们有这样一坨代码: std::vector arr; // ... for(std::vector::iterator iter = arr.begin(); iter != arr.end(); ++iter) { // ... } 其中难看而又不好维护的std::vector::iterator,由于我们无法自动获知arr.begin()的类...
宏(Macro)在C++中是一种非常犀利的工具。如果玩得好了,甚至可以把C++变得很奇怪。。
智能指针是很多人喜欢思考的一种内存管理方案...虽然这种方案本身存在一些硬伤,但是在很多需要自动化处理,且使用方式相对较简单的场合里应用还是比较多的.