李哲—MAY13,2015语言本身Ruby语言支持语法级别的系统,框架,甚至语言本身的方法复写,一般叫做元编程(metaprogramming),此基础之上还有一些术语为mixin,方法的动态定义,运行时类改写等等,这些技术和机制可以让语言本身就能实现其他语言需要字节码才能实现的功能,例如..
分类:
其他好文 时间:
2015-05-15 01:26:58
阅读次数:
243
李哲 — MAY 13, 2015 ##语言本身 Ruby语言支持语法级别的系统,框架,甚至语言本身的方法复写,一般叫做元编程(meta programming), 此基础之上还有一些术语为mixin,方法的动态定义,运行时类改写等等,这些技...
分类:
其他好文 时间:
2015-05-14 23:58:36
阅读次数:
330
1.概述 模版元编程(template metaprogram)是C++中最复杂也是威力最强大的编程范式,它是一种可以创建和操纵程序的程序。模版元编程完全不同于普通的运行期程序,它很独特,因为模版元程序的执行完全是在编译期,并且模版元程序操纵的数据不能是运行时变量,只能是编译期常量,不可修改,另外....
分类:
编程语言 时间:
2015-05-05 23:24:54
阅读次数:
161
今天我们来探讨C++的反射问题,缺乏反射机制一直是C++的大问题,很多系统的设计时,需要根据外部资源文件的定义,动态的调用内部的函数和接口,如果没有反射,将很难将外部的数据,转换为内部的方法。...
分类:
编程语言 时间:
2015-04-28 16:11:12
阅读次数:
174
//模板元编程加速递归
//缺点:模板元在编译时处理,无法调试,并且会加大代码体积
#include
using namespace std;
template
struct data
{
enum{res = data::res + data::res};
};
template
struct data
{
enum{res =...
分类:
其他好文 时间:
2015-04-25 00:19:47
阅读次数:
139
Kernel#eval()方法,可以直接执行ruby代码字符串 (1)Kernel#binding()方法用来捕获当前作用域返回一个Binding对象,Binding对象表示一个完整的作用域 (2)eval()可以接受两个参数,第一个是代码字符串,第二个是...
分类:
其他好文 时间:
2015-04-08 20:04:22
阅读次数:
143
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
1 基本概念1.1 meta program 元程序可以用meta program生成object program, 也可以object program作为数据看待,从而组装出更大的object program 元程序是处理程序的程序,如大家熟悉的编译器、解释器、类型检查器、定理证明器、程序生成器、转换系统和程序分析器等等1.2 object program 目标程序目标程序,又称为“目的程序”,...
分类:
编程语言 时间:
2015-04-05 17:33:38
阅读次数:
157