草庐IT

forward_as_tuple

全部标签

c++ - 关联 std::tuple 容器

是否有可能定义(以一种简单的方式,可能重新使用std容器)“associativestd::tuple”,或者换句话说“variadiacstd::map”。类似这样的东西(这个接口(interface)只是为了解释,欢迎其他可能的接口(interface)):AssociativeTupleat;//std:stringisthekeytypeat.insert("my_float",3.14);//1.at.insert("my_int",42);at.insert("my_bool",true);at.insert("xyz",0);at.insert("my_string","

c++ - g++ 认为我的类声明是 "forward declaration"

这个问题在这里已经有了答案:C++staticpolymorphism(CRTP)andusingtypedefsfromderivedclasses(5个答案)关闭3年前。精简到最低限度,这是我要编译的代码:templateclassB{protected:std::vectorv;public:templatevoidadd(Args...args){this->v.emplace_back(std::forward(args)...);}typenameT::Iget(inti){returnthis->v[i];}};classD:publicB{public:typedefs

c# - "add as link"选项发生了什么?

为什么是addanexistingfileasalink功能仅适用于托管项目?我不能在vcproj中使用相同的功能。是因为托管项目是为msbuild构建的,而vcproj文件不是吗? 最佳答案 添加为链接功能对于VC++项目(无论是否托管)不是必需的,因为VC++项目不要求所有源文件严格驻留在包含该项目的文件夹中。另一方面,C#项目确实有此要求。所以你可以说VC++总是将文件添加为链接并且从不复制它们。您为这种灵active付出的代价是必须创建与磁盘上的真实文件夹不对应的虚拟项目文件夹并自行管理它们。这种传统来自VC6,相信我很多C

c++ - G++ 4.5.0 中的 std::forward_as_tuple

我迫切需要函数std::forward_as_tuple,但仅限于使用GCC4.5.0(我知道这对自己来说是一个糟糕的情况,但它会为我解决很多问题,所以请将尖刻的言论保持在最低限度)。header似乎不包含函数(它应该包含),所以我的问题是:它是否隐藏在其他标题中?(这以前发生过,但很难确定。)是否可以推出自己的实现方案?即:在GCC4.5.0中实现的c++11部分是否可以实现?如果有人真正知道如何做到这一点,将获得奖励。 最佳答案 实现很简单:template/*constexpr*/tupleforward_as_tuple(E

c++ - 带按值传递参数的 std::forward

我在阅读有关封装多态性的文章时遇到了一段这样的代码:templatestructModel:Concept{Model(Timpl):mImpl(std::forward(impl)){}virtualConcept*clone()constoverride{returnnewModel(mImpl)}virtualvoidoperator(constLogMessage::Meta&meta,conststd::string&message)override{mImpl(meta,message);}TmImpl;};在模型构造函数中转发impl有什么意义?如果按值传递参数,转发参数

c++ - tuple_size 的特化不一致

当为某个模板显式特化tuple_size和tuple_element时,我意识到§14.5.1/4,它是这样写的Inaredeclaration,partialspecialization,explicitspecializationorexplicitinstantiationofaclasstemplate,theclass-keyshallagreeinkindwiththeoriginalclasstemplatedeclaration(7.1.6.3).似乎违反了标准本身:我是否遗漏了什么(例如,标准规定class-key“仅供说明”并且应在实际实现中达成一致)?

c++ - 我可以将新的 std::tuple 放入内存映射区域,然后再读回吗?

我有一些打包的结构,我将把它们写入内存映射文件。它们都是POD。为了适应我正在做的一些通用编程,我希望能够编写一个std::tuple几个打包结构。我担心写一个std::tuple的成员到我映射区域的地址,然后将该地址转换回std::tuple会坏掉的。我写了一个小示例程序,它似乎可以工作,但我担心我有未定义的行为。这是我的结构:structFoo{charc;uint8_tpad[3];inti;doubled;}__attribute__((packed));structBar{inti;charc;uint8_tpad[3];doubled;}__attribute__((pac

c++ - mpl::transform on boost::fusion::tuple

以下代码无法在g++(GCC)4.6.020110603(预发布版)和-std=c++0x和Boost1.46上编译。1。我错过了一个包含或者这实际上是一个错误吗?如果是后者,如何解决?#include#include#include#include#include#include#include#includenamespacempl=boost::mpl;templatestructMeta{Tt;typedefmpl::vector,std::function,std::function>MplVector;typedefTFusionSequence;//workstypede

c++ - 从 std::tuple 成员中移除引用

我在STL元组的帮助下实现了一些变量的保存/恢复功能,如下所示:doublea=1,b=2;intc=3;autotupleRef=std::make_tuple(std::ref(a),std::ref(b),std::ref(c));//hereI'msavingcurrentstateofa,b,cstd::tuplesaved=tupleRef;//heregoesblockofcode,wherea,b,andcgetspoiled......................////nowI'mrestoringinitialstateofa,b,ctupleRef=save

java - 性能优化 : C++ vs Java not performing as expected

我编写了两个程序来实现一个简单的矩阵乘法算法,一个用C++编写,一个用Java编写。与我的预期相反,Java程序的运行速度比C++程序快大约2.5倍。我是C++的新手,希望就我可以在C++程序中进行哪些更改以使其运行更快提出建议。我的程序从这篇博文中借用了代码和数据http://martin-thoma.com/matrix-multiplication-python-java-cpp.以下是我正在使用的当前编译标志:g++-O3main.ccjavacMain.java以下是当前的编译器/运行时版本:$g++--versiong++.exe(GCC)4.8.1Copyright(C)