2013年11月17日

C++11 可变参数模板

摘要: 在C++11之前, 有两个典型的受制于模板功能不强而导致代码重复难看的问题, 那就 function object 和 tuple。 拿 function objects 来说, 需要一个返回类型参数及N个参数类型参数。 但因为变长参数模板不受支持,导致不得不重复书写7、8个模板类,但最终也只能支持7、8个参数的 function object。C++11中最终为我们带来了强大的变长 参数模板功能,这些问题也随之迎刃而解了。可变参数模板(Variadic Template)故名思义,即可以接受任意数量参数的类/函数模板。 其声明方式为templateclass VariadicTemplate 阅读全文

posted @ 2013-11-17 21:33 Todd Pointer 阅读(2004) 评论(0) 推荐(1)

C++ 匿名名字空间及静态非成员函数

摘要: 在C++中,static有一个感觉被较少提及的用法:修饰非成员函数,这个用法实际是从C语言继承来的。其作用是表明这个函数只在当前编译单元中有效。这就使这个函数的所有引用在编译时就可以全部确定,无需进入链接阶段,链接器没有机会看到这个函数相关的一切符号,无论导入还是导出(理论上,实际编译器如何处理这个事情可能不尽相同,未作深入研究)。即使多个编译单元都包含相同的signature相同名字的函数,链接器也不会报错或合并符号。比如以下代码:// main.cppvoid foo();void bar();int main(int argc, const char* argv[]) { foo(... 阅读全文

posted @ 2013-11-17 00:56 Todd Pointer 阅读(776) 评论(0) 推荐(0)

导航