草庐IT

三元组

全部标签

Boost.Range 的 C++ 元组 - 获取元素类型的元组?

我正在试验Boost.Range和Boost元组。如果我有一个范围元组,我如何键入定义一个元组或相应的元素值?换句话说,我用什么来代替/*?*/:typedefboost::tuples::tuple&,char[]>TupleOfRanges;typedef/*?*/TupleOfElements;我当然可以手工完成,我会写:typedefboost::tuples::tupleTupleOfElements;甚至:typedeftypenameboost::tuples::element::typeRange0;typedeftypenameboost::tuples::eleme

c++ - 调用函数并传递存储在元组中的参数?

我想要一个Foo类来存储它在构造时获得的函数指针,并在某个时候调用这个函数。我查看了这两个问题以寻求帮助:Passtuple'scontentasvariadicfunctionargumentsHowdoIexpandatupleintovariadictemplatefunction'sarguments?然后,根据答案,想出了这段代码:#includetemplatestructapply_func{staticvoidapplyTuple(std::function&f,conststd::tuple&t,ARGS...args){apply_func::applyTuple(

c++ - 是否可以从大括号类型的初始化中推断出元组的模板参数?

在这个例子中,是否可以允许推导元组的模板参数类型?#include#includetemplatevoidfun(std::tuplet,std::stringother){}intmain(){fun(std::tuple(2.,3),std::string("other"));//okfun(std::make_tuple(2.,3),std::string("other"));//ok,buttryingtoavoid`make_tuple`fun({2.,3},std::string("other"));//desiredsyntaxbut//givingcompilation

c++ - 编译器对带有元组参数的函数的混淆

我正在使用Apple的LLVM4.2编译器来编译此C++代码。我用不同的元组组合重载了一个成员函数,我相信我正确地调用了其中一个,但编译器发现了歧义。本质上,我试图调用下面的方法(1),但编译器发现方法(2)也可以接受/兼容。这是为什么?我打开了C++11标志。enumclassEnum1{...}enumclassEnum2{...}enumclassEnum3{...}enumclassEnum4{...}voidmyMethod(){Enum1e1;Enum2e2;Enum3e3;doSomething({e1,e2,e3});//shouldpick(1),yetcompile

c++ - 命名元组元素

我正在开发某种元组结构,我希望允许用户将其元素用作字段,解释:这是我的元组:templatestructmyTuple{std::tupledata;templateinlinetype&get_t(){//typeistheI'thtypereturnstd::get(data);}//Otherstuff};目前用户可以这样使用:structUserStruct{myTuplet;//Otherstuff}并像这样使用它,UserStructob;ob.t.get_t()=0;这有点复杂......所以我这样做了structUserStruct{myTuplet;decltype(

c++ - 当从函数返回元组时,元组的参数被复制而不是 move

我对以下代码有疑问。我的编译器是MSVC++17VisualStudio15.3版,编译器选项为/std:c++14(相对于/std:c++latest),在Release模式下运行:structBar{inta;std::stringb;Bar(){std::coutfoo(){std::strings="dsdf";return{{1,s},{5,"asdf"}};}intmain(){Bara,b;std::tie(a,b)=foo();std::cout输出是:defaultdefaultdirectdirectmovebconstcopyconstcopymoveassign

c++ - 在 C++ 三元运算符中使用字符串常量是对非左值数组的无效使用吗?

我的代码使用三元运算符检查条件,然后返回指向C字符串常量的指针或抛出异常。奇怪的是,只有当我从三元运算符的一个路径throw时,编译才会失败。如果我在两边都放一个字符串常量,一切都会编译。//thislinegivesnocompilationerrorautostr=condition?"foo":"bar";//thislinegives"error:invaliduseofnon-lvaluearray"autostr=condition?"foo":throwstd::runtime_error{"bad"};这个问题已经开始出现在gcc9.1中。多年来,我一直使用具有上述两种

c++ - 为什么我的 get<k>() 函数不能接收元组的子类?

我在网上复制了一个元组实现,大多数情况下它都能找到:templateclasstuple{};templateclasstuple:publictuple{public:tuple(Tt,Ts...ts):tuple(ts...),tail(t){}Ttail;};templatestructelem_type_holder;templatestructelem_type_holder>{typedefTtype;};templatestructelem_type_holder>{typedeftypenameelem_type_holder>::typetype;};template

c++ - 支持三元 NURBS 的 NURBS 库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭去年。Improvethisquestion有谁知道一个免费的(如免费啤酒)C、C++甚至FORTRAN库,它不仅支持NURBS曲线和曲面,还支持体积(即三变量NURBS)?我知道opennurbs,但据我所知它不支持NURBS体积(请随时纠正我,因为我对该库的经验有限)。

c++ - 具有 const 不可复制元素的元组

我需要创建一个std::tuple其中XYZ不可复制。这样的事情甚至可能吗?我当前的代码autotest()->std::tuple{returnstd::make_tuple(XYZ());}在VisualStudio2010中导致C2248...我发现这很可疑,因为我正在构建具有R值的元组,所以我假设移动构造会启动... 最佳答案 您的问题是该元素既不可复制又const.constXYZ元素表现为constXYZ成员;通过5.2.5p4访问constXYZxvalue上的元素将产生具有unioncv资格的xvalue,即具有有效