草庐IT

可变性

全部标签

c++ - 可变参数模板 : Pass parameter pack without expansion

旧的Cstdio工具提供了一种使用vprintf工具传递可变参数集的方法。是否有类似的方式来传递C++0x可变模板参数包而不扩展它?如果您有一个采用可变参数模板参数包的派生类构造函数,并且需要简单地将其传递给基类构造函数,而不是将其解包,这可能会很有用。例如:templateBase::Base(constT&v,constArgs&...args){/*...expandargshere....*/}templateDerived::Derived(constT&v,constArgs&...args):Base(v,args){/*...don'texpandargs...*/}我

c++ - OpenGL 2D 中的可变形地形 [Worms like]

我搜索了一段时间,听说有不同的方法可以做到这一点,所以我想我应该来这里看看我应该怎么做,根据我收集到的信息,我应该使用数组中的glBitmap和0s和0xFF值来制作地形。对此有任何意见吗?我尝试将其切换为四边形,但我不确定这是否有效以及它的完成方式。我希望地形能够有隧道,比如蠕虫。2维。这是我到目前为止尝试过的,我试图制作一个glBitmap,所以..pixels=pow(2*radius,2);ras=newGLubyte[pixels];然后全部设置为0xFF,用glBitmap(x,y,0,0,ras)绘制;然后可以检查是否有爆炸,什么不是以及可以将任何像素设置为零。这是一种合

c++ - 使用可变参数模板作为类和方法的参数

我的问题是关于以下一段代码:templateclassA{public:templatestaticvoida(){}};templateclassB{public:templatevoidb(){A::a();}};intmain(intargc,char**argv){return0;}我有一个A类,它有一个可变参数模板并包含一个静态方法a,它有另一个可变参数模板。从其他地方(在本例中为B类)我有两组不同的可变参数模板,我想传递给A::a。编译器(GCC4.8.1)给出以下错误信息:main.cpp:Instaticmemberfunction‘staticvoidB::b()’:

c++ - 方法接受函数指针的可变参数模板

下面的代码在我看来应该可以正常工作,但它产生了C2738:couldnotdeducetemplateargumentfor'Type'.在VS2013中。templateuintGetParameterSize(ReturnType(*method)(Args...)){returnParameterSize();}templateuintParameterSize(){uintoutput=sizeof(Type);if(sizeof...(Remaining)>0){output+=ParameterSize();}returnoutput;}voidMyMethod3(inta

c++ - 具有嵌套可变参数模板的函数

您能否使用接受任意元组列表的可变参数模板编写一个函数,每个元组具有一组不同的参数?所以你会有类似的东西:templatevoidfunc(...){}func(make_tuple(1,2),make_tuple("hello"));SFINAE助您一臂之力!进一步了解Jeffery的回答,我写了这个小片段。您可以将元组以外的类型放在func的参数列表中的任何位置,它会编译并运行,当它遇到第一个不是模板类的类型时,它只会破坏我的打印链。seq和gens来自here.templateintprint(T&t){coutvoiddumby(T...){}//soothertemplatec

c++ - 将可变参数模板发送到结构时出现内部编译器错误 : Segmentation fault in gcc .

我正在尝试编译以下代码:#includetemplateclassContainer,class...Args>structContainer{};templatestructStore{};intmain(){Containera;}//g++-Wall-std=c++11main.cppideone我正在使用gcc4.8.1,但出现以下错误:internalcompilererror:SegmentationfaultstructContainer^为什么gcc不编译呢?该代码是否正确? 最佳答案 用Clang编译显示错误:ma

c++ - 递归可变参数函数模板的返回类型的decltype

给定以下代码(取自here):#include#include#include#include#include#includetemplatestructcompose_impl{compose_impl(Fs&&...fs):functionTuple(std::forward_as_tuple(fs...)){}templateautoapply(std::integral_constant,Ts&&...ts)const{returnapply(std::integral_constant(),std::get(functionTuple)(std::forward(ts)...

c++ - 我可以强制可变参数模板采用特定类型的参数吗

在C++模板中有一个概念叫做显式模板参数规范,这意味着我可以强制编译器创建给定类型的模板函数。例如templatevoidfoo(T1t1prm,T2t2prm){/*functionbody*/}foo(1,2);我可以用可变模板函数做类似的事情吗?我没有特定的用例。Variadic模板对我来说是新的,我只是想了解新的(嗯,对我来说)概念的功能。 最佳答案 是的。templatevoidf(constArgs&...args){}intmain(){f(1.0,2,3.0);}这里会调用函数f.你可以这样检查templatevoi

c++ - 如何解压空的可变参数模板列表

我读了this问题并认为它很有趣,所以我开始尝试一些代码以查看是否可以让它工作,但我遇到了一个问题。我的方法是使用函数式编程熟悉的头尾成语。但是,我找不到一种方法来处理空的可变参数模板列表,这将是基本情况。这是我的代码:#include#includeclassA{};classB:publicA{};classC{};classD:publicC{};/*//Forwarddeclarationtemplatestructare_convertible;*///TherearenoArgstemplatestructare_convertible{staticconstboolval

c++ - 创建可变参数模板函数来测量和执行其他函数

我目前正在尝试实现一个函数,它将任何其他函数和该函数的一组有​​效输入值作为输入,并返回该函数的结果以及打印执行它所花费的时间。这是我目前所拥有的:templateTmeasureAndExecute(constfunctionf,Tail...tail){high_resolution_clock::time_pointtime1=high_resolution_clock::now();Tres=f(tail...);high_resolution_clock::time_pointtime2=high_resolution_clock::now();autoduration=du