草庐IT

Metaprogramming

全部标签

c++ - 为什么 Boost MPL 有整数常数?

既然您可以将整数值作为模板参数并对它们执行算术运算,那么boost::mpl::int_和其他整数常量背后的动机是什么?这种动机是否仍然适用于C++11? 最佳答案 您可以将整数值作为模板参数,但您不能在一个模板中同时使用类型和非类型模板参数。长话短说,将非类型模板参数视为类型允许它们与MPL中的无数事物一起使用。例如,考虑一个元函数find它与类型一起使用并在序列中寻找相同的类型。如果您希望将它与非类型模板参数一起使用,您需要重新实现新算法“重载”,find_c为此,您必须手动指定整数值的类型。现在假设您希望它像其他语言一样使用混

C++模板元编程功夫挑战(替换一个宏函数定义)

情况我想实现复合模式:classAnimal{public:virtualvoidRun()=0;virtualvoidEat(conststd::string&food)=0;virtual~Animal(){}};classHuman:publicAnimal{public:voidRun(){std::cout::iteratori=animals.begin();i!=animals.end();++i){(*i)->Run();}}//It'snotDRY.yuck!voidEat(conststd::string&food){for(std::vector::iterato

c++ - 对参数包中的每个元素应用函数

我有以下专门化的模板函数://Passtheargumentthrough...templateUconvert(T&&t){returnstd::forward(t);}//...butconvertstd::stringsconstchar*convert(std::strings){returns.c_str();}如果我有一个可变参数模板函数,例如:templatevoiddoSomething(Args...args){//Convertparameterpackusingconvertfunctionabove//andcallanyothervariadictemplat

在 T1 和 T2 之间选择的 C++ 类型特征

我想要一个模板来根据某些条件从两种类型中进行选择。例如structBase{};templatestructtest{//e.g.hereitshouldselectT1/T2thatis_base_oftypenameselect_base::typem_ValueOfBaseType;};当然,将条件传递给select_base(使其通用)会很有用,但硬编码解决方案更容易也更好。这是我尝试过的示例解决方案,但它始终选择T1:http://ideone.com/EnVT8问题是如何实现select_base模板。 最佳答案 如果您

C++ 在编译时计算和排序 vector

我有一个classA有一个std::vector作为属性。A需要在A的实例时填充此vector被build。计算可能需要一些时间,我想知道是否:它可以在编译时完成。vector也可以在编译时排序我对元编程不熟悉,暂时没有找到方法。这不是特定于操作系统的问题。这是A.cpp文件:#include"A.h"#defineSIZEV100A::A(){fillVector();}voidA::fillVector(){//m_vectorisanattributeofclass"A"//EXPECTATION1:fillthevectorwiththefollowingcalculation

mysql - RoR - obj.reload 后 after_initialize 回调中的不同 object_id

我已经为我的项目编写了一个扩展ActiveRecord模型行为的方法,我已经删除了其中的大部分内容,请考虑以下代码:classActiveRecord::Basedefself.has_translationsafter_initialize:clear_translations_cachedefclear_translations_cachebinding.pry@_translations={}endendend基本上,当我从数据库中.reload实例时,我希望清除@_translations实例变量,但出于某种原因,在从数据库中获取现有对象后,执行一个方法填充@_translat

Swift 3 - 类名/类型查找

我的应用使用绘图类的数百个子类。(这些子类是从艺术文件自动生成的。)理想情况下,我想加载一些子类的名称,检查这些子类是否实际可用,如果是,则实例化它们。但是,似乎在纯Swift中缺少NSClassFromString风格的功能意味着我不得不提前向编译器声明我所有的类名。例如通过一个非常冗长乏味的switch语句来上课:funcdrawingObjectFromClassName(_className:String)->SomeDrawingProtocol?{switchclassName{case"foo":returnfoo()case"bar":returnbar()//etc.

swift - 是否可以在 Swift 中进行元编程

有没有办法像Swift中的Ruby一样在类中动态生成方法?这可以通过将实例变量设置为类似于Javascript中的函数来完成吗? 最佳答案 本书TheSwiftProgrammingLanguage什么都没说。由于这是我们目前拥有的语言的权威指南,这似乎是不幸的。然而,由于swift基于ObjC语言运行时,它具有元编程能力,因此应该有一些方法可以做到这一点。让我们拭目以待。 关于swift-是否可以在Swift中进行元编程,我们在StackOverflow上找到一个类似的问题:

java - 生成 Java 代码解析树并对其进行评估以进行测试

我们有生成Java源代码的需求。我们通过对抽象语法树建模并使用树遍历器生成实际的源代码文本来做到这一点。这一切都很好。由于我的AST代码有点旧,它不支持注释和泛型。因此,我正在寻找开放项目,以用于future需要代码生成的项目。这就是实际问题的来源。我们想要测试生成的代码是否具有正确的行为。这就是我产生实际评估AST而不是生成Java源代码、编译它并针对该代码运行测试的想法的地方。评估者将加快单元测试,并且可以评估更小的生成代码片段,例如仅评估一种方法,从而使“单元”更加合理。到目前为止,我发现com.sun.codemodel项目作为现代(支持java5和6功能)基于AST的代码生成

java - 完整的 Java 元编程框架?

我对元编程很感兴趣(即帮助程序员完成繁琐的编程任务的程序)。我正在寻找具有以下属性的工具:可在编译时和运行时使用;检查程序结构;可以添加新的类、方法或字段,并使它们对Java编译器可见;可以改变方法的行为;基于Java(好吧,根据某些排名,Java是最流行的编程语言);与IDE和构建工具(如Ant、Gradle或Maven)良好集成;积极维护项目;易于使用和扩展;有一些解决方案,例如:反射(reflection)看点注释处理工具字节码操作(CGLIB、Javassist、java.lang.instrument)EclipseJDTProjectLombokGroovy、JRuby、S