草庐IT

Templates

全部标签

c++ - 模板别名在模板类模板方法的参数中不起作用

当我声明参数类型由模板别名指定的模板类的模板方法时,我收到编译错误。如果我将模板类更改为一个类,它会编译。如果我将模板别名替换为实际类型(此处为Templ),它也会编译。为什么它不起作用,当它是模板类并且参数类型是模板别名时?编译器为gcc4.8.0版(Ubuntu/Linaro4.8.0-2ubuntu2~12.04)。templateclassTempl>usingBool=Templ;templateclassFoo{private:public:templateclassTempl>voidmethod(BoolboolTempl);};templatetemplateclas

c++ - 在模板类中使用函数指针

这是我类(class)的选集template>classBinarySearchTree{public:BinarySearchTree&operator=(BinarySearchTreeconst&tree){if(this!=&tree){tree.VisitInOrder(Insert);}return*this;}boolInsert(TValueconst&value){returnm_Insert(value,pRoot);}templatevoidVisitInOrder(TVisitorvisitor)const;...};下面的序列将不起作用:VisitInOrde

用于使用开关展开循环的 C++ 模板?

我的问题类似于Canoneunrollaloopwhenworkingwithanintegertemplateparameter?但我想混合编译时间和运行时间。具体来说,我在编译时知道一个常量NBLOCK并且我想在变量start_block上写一个开关,它只在运行时才知道NBLOCK是开关中的条目数。这是我使用宏得到的结果:#defineCASE_UNROLL(i_loop)\casei_loop:\dst.blocks[i_loop+1]-=(load_unaligned_epi8(srcblock)!=zero)&block1;\srcblock+=sizeof(*srcbloc

c++ - 如何使用模板函数作为 Boost::Unit-test 的自定义谓词

我正在尝试为BOOST_CHECK_PREDICATE构建自定义谓词,其中谓词本身是一个模板函数。我的示例如下所示:#defineBOOST_TEST_MODULEModule#defineBOOST_TEST_MAIN#include//custompredicatetemplateboolis_close_enough(constU&a,constV&b){returnstd::abs(a-b)使用MSVisualC++2010编译会出现以下错误:3>..\boost_test\testSystem.cpp(42):errorC2780:'boolboost::test_tools

c++ - 来自不同特化的模板类继承

这是出于对C++规则的好奇而提出的问题,没有任何实际应用。在使用模板时,我创建了一个类层次结构,如下所示:#include//DeclarationtemplatestructA;//SpecializationforX=0templatestructA{virtualvoidfoo(){printf("A::foo()\n");}};//ExtendedgeneralizedimplementationtemplatestructA:publicA{virtualvoidfoo(){printf("A::foo()\n");}virtualvoidbar(){printf("A::b

c++ - 具有泛型类方法定义的长模板参数列表

如果我有一个模板类,我稍后在文件中为其定义了一个成员函数,有没有办法避免重复长参数列表?例如templateclassFoo{...intBar(intfuncParam1,intfuncParam2,intfuncParam3);}templateintFoo::Bar(intfuncParam1,intfuncParam2,intfuncParam3){...}有什么方法可以让函数定义行不那么长吗?有一堆这样定义的方法让我的代码难以阅读。我试过像这样的typedeftemplatetypedefFooFooClass;intFooClass::Bar(intfuncParam1,i

c++ - 自动向下转换指向派生对象的指针

早上好我有一个模板化类,我想通过指针vector来操作对象。要使用指向模板化类的指针vector,我需要从非模板化类派生此类,我做到了。这是我的问题:要从指向基类的指针调用派生类的方法,我不能使用虚函数,因为不能将模板函数设为虚函数。我需要进行显式转换,这很乏味:一旦使用new创建数字对象,实际上需要向下转换为number*,尽管该对象事先已知为数字。我以一种笨拙的方式解决了这个问题:函数myset测试所有支持的typeid值以获得正确的动态转换。它是执行typeid检查的一长串嵌套ifs。除了繁琐之外,该函数仅适用于调用'set'方法,并且应定义类似的函数以调用其他方法。如果我可以对

c++ - 将模板专门化为嵌套类类型

有没有专门针对嵌套类的特征模板?我已经在下面提到的三个地方试过了,每个地方都有给定的错误。我已经看到有关专门化嵌套模板类的问题,但这不是我在这里尝试做的——我正在尝试专门化嵌套类使用的特征类。TraitUser类使用Trait中的定义作为特定类型T的特化。也许最相关的是,它使用trait成员来初始化基类。templateclassTraitUser:publicX::Type>{//Traitgetsusedinhere};//classA;//classA::B;//structTrait//{};classA{private://classB;//template//{};clas

c++ - 带模板的 dllexport 函数 (C++)

我想知道是否可以定义一个模板化的dllexport函数。到目前为止,该功能还没有模板化,并且可以正常工作。代码是这样的:模块.cpp:#ifdefined(__cplusplus)#defineDLL_Exportextern"C"__declspec(dllexport)#else/*__cplusplus*/#defineDLL_Export__declspec(dllexport)#endif/*__cplusplus*/...VirtualTPM*virtual_tpm;...DLL_ExportvoidTestPointModule_Check(stringname,void

c++ - boost::function 与函数指针

我正在实现一个通用设置读取器。我的想法是我有一个应用程序,它的设置可以是bool值、整数和字符串。然后我有一个Config类,其中实现了此类设置的getter,配置类在构造函数中接受了一个客户,因此它知道它将读取该客户的设置。我在让它工作时遇到了麻烦,我想我误用了boost::function,将它与普通函数指针混淆了。在映射中,我希望有引用,而boost::function应该只在配置读取时绑定(bind),因为我已经为那里分配了一个Config实例给定的客户。问题是我不能在没有typedef的情况下使用函数指针,这会使模板工作复杂化,有什么更明智的解决方案吗?#include"Co