草庐IT

TEMPLATE

全部标签

c++ - clang++ - 将模板类名视为类范围内的模板

似乎clang++(我试过clang3.2)将模板类的名称视为实例化类,而不是类范围内任何事件的模板。比如下面的代码templateclassT>classA{};templateclassB{Amember;//^----clang++treatsBasaninstantiatedclass//butIwantittobeatemplatehere//thiscodecouldcompileing++};intmain(){Bb;return0;}我应该怎么做才能编译它? 最佳答案 C++03以这种方式解析B(称为injected

c++ - 专门化成员 S::display 需要 ‘template<>’ 语法

我正在创建一个特征类来帮助我的程序。我有一个名为operations的模板类包含方法display和area.当我定义这些函数时,我得到了错误。他们在这里:error:specializingmember‘traits::operations::display’requires‘template’syntaxerror:specializingmember‘traits::operations::area’requires‘template’syntax如您所见,编译器要我插入template就在这些定义之前。但是当我这样做时,我会收到一大页错误。出了什么问题,我该如何解决?这是我的程

c++ - C++98 标准在哪里指定对静态成员的调用何时依赖于模板?

使用Clang3.0-std=c++98编译,接受以下代码:templatestructI{typedefintType;};templatestructS{staticintf(int);//staticintf(int*);//implicitlyinstantiatesItypedefI::TypeType;};S::Types;取消注释'f'的重载会导致Clang报告错误“在依赖类型名称之前缺少'typename'”。G++4.8在有或没有重载的情况下报告相同的错误。无论有没有重载,msvc10都不会给出任何错误。标准在哪里说明'f'是否依赖并且'typename'是必需的?如

c++ - 最烦人的 friend ?友化专门的自由函数模板会引发编译错误(重载方法时)

代码我将问题简化为这个例子(粘贴为一个block以便于编译)///\briefThefree-functiontemplate,///whichisoverloadingamethodwiththesamenameinAbstractAbelow.templateinlineconstToverloadedMethod(constT&lhs,constT&rhs){returnT(lhs.value+rhs.value);}///\briefAbstractAclassclassAbstractA{public:AbstractA(intaVal):value(aVal){}inlin

c++ - 在类型说明符中使用 "simple-template-id"

在C++11标准中,dcl.type.simple和dcl.type.elab部分声明类型说明符可以包括simple-template-编号。另一方面,根据temp.names部分,simple-template-id可以表示函数模板特化。真的可以使用函数模板特化来指定类型吗? 最佳答案 7.1.6.2/2Theothersimple-type-specifiersspecifyeitherapreviously-declareduser-definedtypeoroneofthefundamentaltypes(3.9.1).强调

c++ - 如何为模板方法实现编译时 foreach()?

我想实现一个编译时的foreach(),它可以调用给定的模板成员函数N次。目前我有我的编译时间foreach:structForEach{templatestructIntToType{};typedefIntToTypeForEachDoNotTerminateLoop;typedefIntToTypeForEachTerminateLoop;templatestaticvoidForEachImpl(ForEachDoNotTerminateLoop,TMethodmethod){method.Invoke();ForEachImpl(Internal::IntToType(),m

c++ - 类模板的成员模板的成员模板的显式模板函数特化是否有效?

有谁知道这个显式特化是否有效:templatestructL{templatestructO{templatestaticvoidFun(U);};};templatetemplatetemplatevoidL::O::Fun(U){}clangtrunk(12/3/2013)给出以下错误:f:...\test.cpp:36:20:错误:类'O'中'Fun'的越界定义没有定义voidL::O::Fun(U){}~~~~~~~~~~~~~~^产生了1个错误。我们将不胜感激标准中的任何支持性引用以证明您的回答是正确的!注意:我有点惊讶这是一个错误-我希望为任何以.开始实例化“Fun”的模板

c++ - 为什么bitset要用template来实现?

要定义一个16位的位集,就像这样:std::bitsetbs(0x123);如果让我设计一个bitset类,我大概会这样:mine::bitsetbs(16,0x123);std::bitset是由模板实现的有什么原因吗?这是我们应该在某些情况下应用的好模式吗? 最佳答案 Isthereanyreasonthatstd::bitsetisimplementedbytemplate?Isthisagoodpatternthatweshouldapplyinsomesituations?因为std::bitset被设计成一个静态位集。在

c++ - 错误 : Use of class template requires template argument list

当我尝试运行我的程序时,此错误显示为“errorC2955:'FOURTEEN':useofclasstemplaterequirestemplateargumentlist”#includeusingnamespacestd;templateclassFOURTEEN{private:Ta[n];public:voidReadData();voidDisplayData();};voidFOURTEEN::ReadData(){for(inti=0;i>a.[i];}voidFOURTEEN::DisplayData(){for(inti=0;i>a.[i]P;//Readdatai

c++ - 如何存储可变类型的参数?

这个问题在这里已经有了答案:variadictemplateclasstomakeadeferredcalltoavariadictemplatefunction(2个答案)关闭8年前。我想从action成员函数而不是构造函数中调用这个foo函数。为此,我必须将值存储在某处。我无法弄清楚执行此操作的语法。#includevoidfoo(inta,intb){std::coutstructFoo{public:Foo(Args...args){foo(args...);}voidaction(){}private://Args...?};intmain(){Foox(1,2);}