草庐IT

c# - 消除 visual studio 解决方案文件夹中的临时文件

我正在清理一堆来自不同来源的visualstudio项目/解决方案,每个解决方案中都存储了数量惊人的临时文件和临时文件夹。我想知道哪些文件类型可以安全删除,这样我就可以编写一个脚本来处理繁重的工作,这样当我试图组织整个文件夹结构并将其链接到正确的共享文件位置。据我所知,以下文件和文件夹是临时的,可以安全删除:文件*.sdf*.sln.docstates*.suo*.upgradelogxml*.user*.vcxproj.filters*.sln.old*.suo.old升级日志.XML*.wixproj.vspscc*.csproj.vspscc*.SCC*.ncb*.opt*.pl

c++ - auto&& 将如何延长临时对象的生命周期?

下面的代码说明了我的担忧:#includestructO{~O(){std::coutT&&f(T&&t){returnstd::forward(t);}intmain(){std::cout现场观看here.据说auto&&会延长临时对象的生命周期,但我找不到关于这个规则的标准词,至少在N3690中没有。最相关的可能是关于临时对象的第12.2.5节,但不完全是我要找的。那么,auto&&生命周期延长规则会应用于所有表达式中涉及的临时对象,还是仅应用于最终结果?更具体地说,a.val是否保证在我们到达情况1的范围末尾之前有效(非悬挂)?编辑:我更新了示例以显示更多案例(3和Ex)。您会

c++ - unique_ptr 的临时只读拷贝

我对C++11的智能指针还很陌生,我正在尝试在项目中有效地使用它们。在我的项目中,我有很多函数对vector进行常量引用。的unique_ptr,对其进行一些计算,并将一些结果放入返回参数中,如下所示:voidcomputeCoefficients(constvector>&roots,vector>&coeffs){...}我正在使用unique_ptr因为调用所有这些函数的过程是vector中对象的唯一所有者,函数只是“借用”对象,以便将它们作为输入读取。现在我正在尝试编写一个函数来对vector的不同子集进行计算它接收,为了做到这一点,它需要有不同“版本”的vector包含这些子

c++ - 临时对象的全表达边界和生命周期

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++:Lifespanoftemporaryarguments?据说临时变量在评估完整表达式的最后一步被销毁,例如bar(foo().c_str());临时指针在bar返回之前一直存在,但是为了什么baz(bar(foo().c_str()));它是否仍然存在直到bar返回,或者bazreturn表示完整表达式在这里结束,编译器我在baz返回后检查了destruct对象,但我可以依赖它吗?

c++ - 传递临时 std::string 时的 string_view 行为

我只是遇到了一些误解:至少在libc++实现中,std::experimental::string_view具有以下简洁的实现:templateclassbasic_string_view{public:typedef_CharTvalue_type;...templatebasic_string_view(constbasic_string&str):__data(str.data()),__size(str.size()){}private:constvalue_type*__data;size_type__size;};这个实现是否意味着如果我们将右值表达式传递给这个构造函数,我

临时对象的 C++ 生命周期——这安全吗?

如果我正确理解了临时对象生命周期的规则,这段代码应该是安全的,因为make_string()中的临时stringstream的生命周期一直持续到完整的表达。不过,我不是100%确信这里没有细微的问题,任何人都可以确认这种使用模式是否安全吗?它似乎在clang和gcc中工作正常.#include#include#includeusingnamespacestd;ostringstream&make_string_impl(ostringstream&&s){returns;}templateostringstream&make_string_impl(ostringstream&&s,T

c++ - 是否保证在返回时 move 临时对象的子对象?

#include#includeusingnamespacestd;autof(){vectorcoll{"hello"};////MustIusemove(coll[0])?//returncoll[0];}intmain(){autos=f();DoSomething(s);}我知道:如果我只是returncoll;,那么coll肯定会在返回时move。但是,我不确定:coll[0]是否也保证在返回时move?更新:#includestructA{A(){std::coutgcc6.2和clang3.8输出相同:constructedcopy-constructeddestruct

c++ - 通过右值数据成员延长临时的生命周期适用于聚合,但不适用于构造函数,为什么?

我发现以下延长临时生命周期的方案有效,我不知道它是否应该,但它确实有效。structS{std::vector&&vec;};intmain(){Ss1{std::vector(5)};//constructwithtemporarystd::cout但是,当S被赋予显式值构造函数时,它不再是聚合,并且该方案因对s1.vec[0]的无效读取而失败/p>structS{std::vector&&vec;S(std::vector&&v):vec{std::move(v)}//bindtothetemporaryprovided{}};intmain(){Ss1{std::vector(5

c++ - 临时对象最初是 const 吗?

这个代码是UB吗?structA{voidnonconst(){}};constA&a=A{};const_cast(a).nonconst();换句话说,(临时)对象最初是const吗?我已经仔细阅读了标准,但找不到答案,因此希望能引用相关部分的内容。编辑:对于那些说A{}不是const的人,那么你可以做A{}.nonconst()? 最佳答案 引用的初始化a由[dcl.init.ref]/5给出(大胆的矿山):Otherwise,iftheinitializerexpressionisanrvalue(butnotabit-fi

c++ - 是否有模仿临时变量的 C++ 变量类型?

这确实是一个非常愚蠢的问题,答案可能是简单的“否”,但我会问以防万一,因为这样会很好。我可以做到这一点,行为完全符合要求:structA{intx;};Ainc(Aa){a.x+=1;returna;}inc({1});{1}是临时的,它不会被重用,因为它已被inc()设置为无效(因为move构造函数的使用——如果我对此有误,请纠正我!)。但是如果我不记得{1}应该代表什么怎么办,所以我为它做了一个变量,但我仍然想强制要求它不能使用了两次(我试图让它就像一个临时的,但命名):Aa={1};inc(a);inc(a);a的引用类型没有变化会导致编译器提示双重使用——但是move构造函数已