c++ - 你能在 C++ 元编程中做文件 IO 吗?

标签 c++ templates io metaprogramming template-meta-programming

实际上,我认为这不是好的做法。但是因为 C++ 元编程是图灵完备的,所以为了完整性,我一直在研究它。在生产中我不会使用它,但为了好玩我想在编译时做一些文件 IO。有人知道如何在编译时使用元编程进行文件 IO 吗?也相当于使用元编程在编译时使用 C++ 运行脚本?

最佳答案

答案是否定的,你不能。不是任何普通意义上的词。

但是,从好的方面来说,文件 I/O 不是图灵完备性的要求,实际上也不是任何编程语言定义的要求。从编程语言文件的角度来看,I/O 仅仅是意外数据的来源,或者是发送不再需要的位的地方,或者是语言的某些部分之间的有趣连接,因此一次存放的位可用于另一个。

因此在某种抽象层次上,编译器的内部存储可以被视为一个存储库(或文件系统),它预装了程序的源代码和一些符号。元编程脚本可以在此存储库上交互(执行 I/O),接受输入代码和符号并发出生成的代码和符号,其中一些是它之前生成的。

但答案仍然是否定的。没有文件 I/O。

关于c++ - 你能在 C++ 元编程中做文件 IO 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900698/

相关文章:

c++ - 使用可变参数模板和重载 << 运算符编译错误

javascript - 从 JSON 自动生成 HTML

c# - 在文本文件的特定位置添加新行。

c++ - 函数参数列表中用于输出的参数应该在哪里

c++ - 在模板中返回 std::set<T>::iterator 时出错

java - 如何将字符串添加到 .txt 文件末尾?

java - 如何将输出写入控制台和文件?

c++ - 如何在 C++ 中对字符串变量应用计数出现次数的概念

c++ - 单个类的 GCC C++ 覆盖 -frtti

c++ - CTAD、initializer_list、非显式构造函数和函数调用