Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哪些库使用用编译时元编程技术实现的设计模式?_C++_Design Patterns_Templates_Metaprogramming_Compile Time - Fatal编程技术网

C++ 哪些库使用用编译时元编程技术实现的设计模式?

C++ 哪些库使用用编译时元编程技术实现的设计模式?,c++,design-patterns,templates,metaprogramming,compile-time,C++,Design Patterns,Templates,Metaprogramming,Compile Time,有人知道有哪些库使用了使用编译时技术(如模板元编程)实现的设计模式吗?我知道Loki实现了一些,但我需要找到其他库。是一个相当大的库。我认为您要求的库更多地帮助使用设计模式,而不是使用设计模式的库,不是吗 Boost中有一些功能,但不是太多,比如Flyweight-Design模式,用于管理大量高度冗余的对象 尚未发布但已被接受的库Boost.Factory和被拒绝的库Boost.Singleton P>还有一些库,它实现了C++习惯用法,如Boost。Pimpl(关于回顾表),Scope E

有人知道有哪些库使用了使用编译时技术(如模板元编程)实现的设计模式吗?我知道Loki实现了一些,但我需要找到其他库。

是一个相当大的库。

我认为您要求的库更多地帮助使用设计模式,而不是使用设计模式的库,不是吗

Boost中有一些功能,但不是太多,比如Flyweight-Design模式,用于管理大量高度冗余的对象

尚未发布但已被接受的库Boost.Factory和被拒绝的库Boost.Singleton


<> P>还有一些库,它实现了C++习惯用法,如Boost。Pimpl(关于回顾表),Scope Exit(接受),Memoizer。< /P> < P>使用表达式模板的一些库:UBLAS、BLITZ、矩阵模板库、F张量或谷歌C++模板矩阵,以找到更多。
顺便说一句,ftensor真的很灵巧。

这取决于您感兴趣的设计模式。有一些像“活动对象”和Dispose,在编译时很难实现

“解释器”模式->boost.ublas和blitz++都使用“表达式模板”

“桥”模式->每个标准容器都有一个“分配器”参数(大多数Loki也是桥模式)

“策略”模式->STL模板函数根据参数类型选择最佳实现

所有这些的唯一区别是模式的计算发生在编译器运行时,而不是可执行文件运行时。所以你只需要稍微调整一下你的想法:模板就是程序,“C++编译器”运行并解释这个程序。此模板程序的输出是一个可供链接的对象文件。换句话说,当编译器运行时,模板代码的运行时是精确的。C++模板是一个图灵完整的函数语言,就像Lisp或XSLT一样。p> 事实上,1993年第一个模板元程序的输出不是一个可执行文件,而是一系列的编译器错误,这些错误打印了fibonacii序列或类似的东西

Doen almal GPG hier

在Loki实施的任何情况下: -工厂摘要 -工厂 -独生子女 -访客 -命令

助推飞锤

在STL中有迭代器和适配器,尽管我很确定它们不算 因为是编译时

最初的规范有些模糊

确保不要将泛型编程(基于模板的实现)与其他编译时技术混淆


有人知道上述问题的含义吗?

你能列举一下你在Loki中找到的、你感兴趣的设计模式吗。我对它们都感兴趣。。。我正在写一份关于设计模式及其编译时实现的报告,也就是说,编译器确切地知道要使用哪些类进行编译(我不知道这个问题是否清楚)。在Loki中,我能记忆犹新的是singleton、抽象工厂和visitor。boost::iterator_Facade是另一个大的(至少对我来说是这样)我正在研究设计模式,所以更多的是设计模式的实现,但是帮助您使用它们或在自己的实现中使用它们的库是finewo,答案被接受了,没有人投票支持。这可能吗?它可以/正在使用哪些模式?