草庐IT

is_unique

全部标签

c++ - 如何一次将多个 unique_ptr 插入 vector

我有一个vector:std::vector>并想插入几个新的unique_ptr在指定位置放入其中。有成员函数std::vector::insert(iteratorposition,size_typen,constvalue_type&val)但唉,复制的限制unique_ptr的不允许使用此重载。我已阅读thisquestion,然而这是为了插入unique_ptr已经存在于另一个vector中。我想创建新的。我意识到我可以用一个循环来做到这一点,例如将3个新项目插入vector的开头:for(intn=0;n!=3;++n)vec.insert(vec.begin(),std:

c++ - Ctags 错误 "Is a directory"

我试图用ctags标记一个C++项目,并使用此答案C++sourcetagging中列出的选项.我在一个包含多个文件夹的项目树中,这些文件夹包含源文件。我尝试了以下方法来标记整个源代码树ctags--c++-kinds=+p--fields=+iaS--extra=+q--language-force=C++-R.find.-typef\(-iname"*.cpp"-o-iname"*.hpp"\)|xargsctags--c++-kinds=+p--fields=+iaS--extra=+q--language-force=C++ctags-R.ctags-R*和上面所有的都给出同样

c++ - 与 friend 一起上课而不是前向声明,: which compiler is correct

这个问题在这里已经有了答案:Friendmethod"notdeclaredinthisscope"inC++(1个回答)Error:'FriendMemberFunctionName'wasnotdeclaredinthisscope(3个答案)关闭3年前。我有这个简单的C++程序:#includestructobj{friendintf(int);voidm(intx){std::cout如果我使用GNUC++编译器g++进行编译,我会得到错误prog.cpp:7:55:error:'f'wasnotdeclaredinthisscope但是,如果我使用cl(和/W4)编译它,它会

编译gcc踩坑记录——libtool: error: ‘/usr/local/lib/libgmp.la‘ is not a valid libtool archive

安装gcc依赖过程中出现错误,解决方法在google找到的。三个依赖如下:libgmplibmpfr依赖libgmplibmpc依赖libgmp、libmpfr直接就无脑(网上很多教程,这里就不赘述了)./configure--prefix=/home/xx/make&&makeinstall然后在libmpc时候就报错了:libtool:error:'/usr/local/lib/libgmp.la'isnotavalidlibtoolarchive解决方法:因为libmpc引用了libmpfr,libmpfr引用了libgmp而libgmp.la这个文件有bug,编译脚本里libtool路

c++ - SFINAE : Detecting if a function is called by a compile time known value

我喜欢在我的一个ctors以编译时已知值被调用时做一些检查。有办法检测吗?所以当有人调用它时:Aa(10);因为10是编译时已知常量,所以我喜欢调用一个特殊的构造函数,如下所示:template>A(intValue){}知道如何解决这个问题吗?谢谢! 最佳答案 积分常量可以解决您的问题:structA{template*=nullptr>A(std::integral_constant){}};然后,你可以像这样使用它:Aa{std:integral_constant{}};为了便于使用,您还可以使用类似于boost::hana的

c++ - 返回对 std::unique_ptr 的引用的原因

我想知道在C++中是否有合理的理由通过引用返回唯一指针,即std::unique_ptr&?我以前从未真正见过这种技巧,但我的新项目似乎经常使用这种模式。乍一看,它只是有效地打破/规避了“唯一所有权”契约,使得无法在编译时捕获错误。考虑以下示例:classTmContainer{public:TmContainer(){//Createsomesortofcomplexobjectonheapandstoreunique_ptrtoitm_time=std::unique_ptr(newtm());//Storesomethingmeaningfulinitsfieldsm_time-

c++ - is_assignable 和 std::unique_ptr

Here是来自gcc的测试文件,livedemostructdo_nothing{templatevoidoperator()(T*){}};intmain(){inti=0;std::unique_ptrp1(&i);std::unique_ptrp2;static_assert(!std::is_assignable::value,"");//note!here.}std::is_assignableIftheexpressionstd::declval()=std::declval()iswell-formedinunevaluatedcontext,providesthemem

c++ - 从带有原始指针的 vector 中删除 std::unique_ptr 的最佳方法?

所以我有一个像这样的vector:std::vector>myVector;然后我有另一个vector,其中包含SomeClass的原始指针:std::vectormyOtherVector;如果myOtherVector中有一个元素,它也会在myVector中,所以我想遍历myOtherVector中的每个元素并删除来自myVector的相同元素。然后清除vector。这是我想出的:for(size_ti=0;i这会产生编译时错误,因为myVector拥有唯一的指针,但我给remove()函数一个原始指针。这是我需要帮助的地方,因为我不知道解决这个问题的正确方法是什么。我将行更改为:

c++ - Qt 信号/槽 : Is it an error to emit a signal from a temporary object?

在Qt中,如果从一个临时对象中调用一个信号,使得该对象可能在调用槽时被删除,这是一个错误吗?如果相关,代码会从临时对象的构造函数发出信号。(注意:没有指针或引用作为参数传递,所以这不是关于悬挂指针或引用的问题。我只是想知道,以最简单的形式,从Qt中的一个临时对象。)这是我的代码的简化版本://MyapplicationclassHandyApplication:publicQApplication{Q_OBJECTpublic:explicitHandyApplication(intargc,char*argv[]);signals:publicslots:voidhandySlot(

c++ - 现代 C 和 C++ : it is possible to use one defined structure for other declared structure?

假设我想制作某种支持加载图形Image的引擎,所以我有structImage;Image*load_image_from_file(...);我不想让外部世界知道Image到底是什么,他们只会处理指向它的指针。但是在engine内部我想使用特定的类型,例如SDL_Surface在SDL中完全定义。我能否以某种方式重新定义此文件的图像,以便编译器在每次看到Image*(宏除外)时都假定为SDL_Surface*?即我想要像typedefstructSDL_SurfaceImage;这样的东西所有的尝试都像usingImage=SDL_Surface;typedefSDL_SurfaceI