非常感谢。
答案 0 :(得分:3)
Q1。使用什么样的模板技术,可以称为“元编程”?
模板元编程是指使用模板和编译器来执行编程的一些关键元素:循环,if-else分支,C / C ++开关,如分支,递归等。
第一个这样的元程序用于生成前几个素数作为编译器错误消息。见http://www.erwin-unruh.de/primorig.html
Q2。是否有一个很好的定义是什么和什么是非元编程?
可以在Wikipedia找到一个好的定义。
模板元编程(TMP)是一种元编程技术,其中编译器使用模板生成临时源代码,该代码由编译器与其余源代码合并,然后进行编译。这些模板的输出包括编译时常量,数据结构和完整函数。模板的使用可以被认为是编译时执行。该技术被许多语言使用,最着名的是C ++,还有Curl,D和XL。
Q3。我们的C ++ 11 STL是否包含大量元编程?
最有可能,但这是猜测。我没有深入研究标准库的任何实现。
Q4。“type_traits”元编程“?
再一次,我没有深入研究它,但我想“type_traits”的大多数功能都是使用元编程技术实现的。
答案 1 :(得分:1)
"元编程"在非正式演讲中用于指代各种编程技术:
有关类型的信息,即"类型特征"。这是最直接的meta类型,在那个" meta"这意味着"关于某事"
(Ab)使用C预处理器或模板。你并没有真正编程"在" C ++而不是子语言。 IOCCC有很多人使用C预处理器来完成各种完整程序,比如河内塔和计算素数。 "经典"模板元程序的一个例子是计算斐波那契。换句话说,你正在"外面"用于创建程序的C ++的正常范围,这使得此用法类似于metagaming
Quines,创建程序,制作程序,制作程序,自托管编译器等。这里" meta"意味着"自我指涉",像分形
标准库是否包含"元编程"是实现定义的。有些实现对它很疯狂,有些则没有。
也没有一个好的定义,单词" meta"具有讽刺意味的是模糊。