2 用于判断类型的traits类is_void类可以判断模板参数的类型,使用很简单,注意,也可以直接使用::value。cout ::type::value << endl;
cout ::type::value << endl;
但是实现很有趣,特化居然可以用来继承不同的类。这里没有去找clang++实现代码,用boost代码代替吧。template
struct is_void : publ...
分类:
编程语言 时间:
2015-04-06 23:21:06
阅读次数:
293
1 integral_constant类这个类是所有traits类的基类,分别提供了以下功能:value_type 表示值的类型value表示值type 表示自己, 因此可以用::type::value来获取值true_type和false_type两个特化类用来表示bool值类型的traits,很多traits类都需要继承它们下面的代码分别来自C++11和Boost,略有差别:C++11包含va...
分类:
编程语言 时间:
2015-04-06 18:45:19
阅读次数:
298
2.4 switch/case 替代现在模拟switch/case语句,不过也是在编译期运行。先看调用代码和输出结果// test case
cout << "test case" << endl;
Case::Run();
test case
case 2
实现代码很简单,还是模板特化template
class Case {
public:
static inline void Run()...
分类:
编程语言 时间:
2015-04-05 22:02:23
阅读次数:
223
2.2 loop unrolling 循环展开前面enum一节介绍的是和template联合,引发编译器递归的奇妙作用。template本身无需enum配合也可以达到递归的效果。// test template recursive for loop unrolling
cout << "test 2: template recursive for loop unrolling" << en...
分类:
编程语言 时间:
2015-04-05 17:32:12
阅读次数:
222
2.1 用enum做数值计算下面两篇文章都介绍了模板元编程,enum是其最重要的基本工具 http://www.codeproject.com/Articles/3743/A-gentle-introduction-to-Template-Metaprogramming https://www10.informatik.uni-erlangen.de/~pflaum/pflaum/ProSemin...
分类:
编程语言 时间:
2015-04-05 17:31:44
阅读次数:
118
2.3 if 替代将if语句放在编译期执行,可以用模板特化的方式实现。下面是调用代码:// test if
cout << "test if" << endl;
If::Run();
输出结果为:test if
it's false
模板类的实现如下:template
class If {
public:
static inline void Run() {
cout << "it's...
分类:
编程语言 时间:
2015-04-05 17:31:41
阅读次数:
133
01.视C++为一个语言联邦
CObject-Oriented C++Template C++STL
过程形式(procedural),面向对象形式(object-oriented),函数形式(functional),泛型形式(generic),元编程形式(metaprogramming)
问题:
泛型形式和元编程形式的区别?
过程形式和函数形式的区别?
结论:...
分类:
编程语言 时间:
2015-03-11 23:32:01
阅读次数:
430
2014年底才看到github和channel9上有CppCon2014的视频和资料,顿时激动不已。最近小生也一直在研习CppCon2014中令人兴奋的内容。这篇鄙文就是小生学习了《Modern Template Metaprogramming》之后,有对Unevaluated Operand...
分类:
Web程序 时间:
2015-03-02 14:27:14
阅读次数:
219
一提到ruby大家就会条件反射似地想起rails,似乎ruby只有一个用途,就是rails。虽然我没写过rails,但我以为ruby语言本身的魅力远远超过rails这个第三方框架。这是一门值得细细品味的语言,与这门语言同样值得品味的还有一本叫《Metaprogramming Ruby》的书。下面是摘...
分类:
编程语言 时间:
2015-01-17 17:49:43
阅读次数:
201
As reading the C++ template metaprogramming, I learn the famous saying in software engineering again. How to understand this remark in the context of ...
分类:
其他好文 时间:
2015-01-02 23:38:31
阅读次数:
273