jjzjj

TypeName

全部标签

c++ - 帮助在 std::map 中存储模板类的 intrusive_ptr

我在boost::intrusive_ptr中包含一个Locker类型的小模板类,我想将其存储在std::map中:templateboolLockerManager::AddData(conststd::string&id,T*pData){boost::intrusive_ptr>lPtr(Locker(pData));//Line359-compilesmMap.insert(make_pair(id,lPtr));//Line361-giveserror}Locker只是一个容器类;它的构造函数看起来像:templateLocker::Locker(T*pData):Intru

模板化类型的 C++ 模板特化

我希望通过使用BOOST_STATIC_ASSERT来帮助使用我的一些模板代码的用户,让他们知道他们使用了一个不兼容的类型,其编译错误消息比当前使用不兼容类型生成的怪物更简单。该示例有点太复杂,无法在此处重现,但希望这能捕获我想要的本质:我的问题是如何格式化最后一行“模板模板”?templateclassInterestingType{}templatestructis_interesting_type{staticconstboolvalue=false;};templatetypenameInterestingType>//Noideahowtoformatthis..struct

删除C ++模板/TypeName后,算法慢慢。

为了学习目的并了解事物的工作方式,我试图在没有模板的情况下重写它wstring:#includetemplatestructmy_equal{booloperator()(charTch1,charTch2){returntoupper(ch1)==ch2;}};templateboolcontains(constT&str1,constT&str2){typenameT::const_iteratorit=std::search(str1.begin(),str1.end(),str2.begin(),str2.end(),my_equal());return(it!=str1.end())

c++ - CRTP 容器

我正在学习一些模板编程,对此我还很陌生。我想要实现的是一些包含STL容器的CRTP类。让classA{};作为(编译时)基类的示例,classB{};和classC{};在编译时按照CRTP样式“派生”。现在B和C都将包含容器。为了示例的目的,让它分别是std::vector和std::set。现在,我想通过begin()和公开前向迭代器的end()函数公开这些迭代器。但是,我不想公开B和C中的确切容器是什么,我想为A定义这些函数,以便在调用时使用正确的B和C。这可能吗?现在我的计划是为B和C创建一个Iterator内部类,它包含(一个vector或一个vector)的实际迭代器视情况

c++ - 将类型解析为 class::typedef 的更短方法

我有几个类(class)。现在它们被一个符号隔开。其中很少包含type(typedef),也很少没有。structA{...public:typedefsomeclasstype;}structB{...};我想实现一个SFINAE以这样的方式上课,Resolve::typeo1;//shouldresolveto'A::type'Resolve::typeo2;//shouldresolveto'B'一种方法是使用上一个链接中所示的基本SFINAE,它检查T是否包含type,然后使用bool检查器.例如,templatestructhas_type{typedefcharyes[3]

c++ - 使用另一个构造一个具体的 boost::tuple 类型

给定:typedefboost::tupleTuple_Tn其中类型T1,...Tn都已定义,给定类型T_another,我想定义一个新的元组类型:typedefboost::tupleTuple_T_plus_1但这是我的问题:在我想定义它的地方,我只能访问类型Tuple_Tn和T_another。换句话说,是否可以仅根据Tuple_Tn和T_another来定义Tuple_T_plus_1? 最佳答案 我不确定Boost.Tuple中是否有这样的功能,也许Boost.Fusion会更适合您的需求。但是,如果您有一个支持C++11

c++ - 如何根据标记的参数包调用一组可 rebase 类构造函数?

我希望能够做到这一点:templatestructA{A(inti){}};templatestructB{B(){}B(constchar*){}};templateclass...Mixins>structMix:Mixins>...{//Thisworks,butforcesconstructorstotaketuplestemplateMix(Packs...packs):Packs::Type(packs.constructorArgs)...{}};templateclassMixinType,typename...Args>structArgPack{typedefMix

c++ - 函数对象方法对函数指针安全吗?

我正在编写一个大量使用柯里化(Currying)对象和模板的项目。新decltypec++11的特性意味着我可以开始接受没有明确定义返回类型的函数对象作为我的函数对象的curry。相反,可以使用元函数提取返回类型,例如:templatestructunary_result{typedeftypenamestd::remove_reference::type>::typetype;};给定一个函数对象:structfoo{intoperator()(double)const;};(它不继承自std::unary_function或定义它的result_type),我可以将它作为unary

C++ 操作模板对象

我有课classBarBase{};和一个派生模板类,其中存储了指向成员函数的指针和指向同一类对象的指针templateclassBar:publicBarBase{void(TypeName::*action)(void);TypeName*object;};我创建了Bar的实例并将指向它们的指针存储在另一个类Foo的vector中classFoo{private:vectormyBars;...};现在进入问题。Foo有一个模板函数templatevoidFoo::foo(TypeName*object,void(TypeName::*action)(void))在这个函数中,如何

c++ - 如何在 C++ 中避免 "template template template"模板

我已经尝试实现一个“模板模板模板”——模板类来满足我的需求(我对使用模板元编程很陌生)。不幸的是,我发现以下主题为时已晚:TemplateTemplateParameters不过,我需要实现如下所列的内容。根据编译器,最后一个typedef不工作。我不确定,但我认为这是由于3x模板限制的限制。在这个简单的示例中是否有可能绕过3xtemplate定义?templateclassITTranslator{public:ITTranslator()=0;virtual~ITTranslator()=0;virtualvoiddoSomething()=0;}templateclassTCon