草庐IT

c++ - 将 c++98 代码升级到 c++11

我继承了一个庞大的c++代码库,终于可以在64位RedHat7(gcc版本4.8.520150623)上编译和运行它。默认情况下,项目中的makefile是为c++98编译的。我想打开c++11,因为它显然提供了许多语言优势。g++4.8有rathercompletesupport对于C++11。我的问题是:这会带来什么样的风险?我需要注意什么?什么类型的东西可能会破坏(除了不能编译的东西)?我的google-foo在这方面的评分很低,因为我已经搜索过了,但没能找到任何类型的分析。(也许是因为他们真的没有任何风险,我只是不知道。) 最佳答案

c++11 聚合初始化之前的值初始化

我试图理解@bolov对问题Deleteddefaultconstructor.Objectscanstillbecreated...sometimes的第一个接受的答案[1]我好像在那里发现了一个错误,所以它搞砸了整个解释。@bolov解释了为什么这段代码在c++11中成功编译:场景Astructfoo{foo()=delete;};//AllbellowOK(noerrors,nowarnings)foof=foo{};foof={};foof{};//willuseonlythisfromnowon.为什么这段代码无法在C++11中编译:场景Cstructfoo{foo()=de

C++11 正则表达式,非贪婪

我对C++11正则表达式有点问题,我认为它与贪婪有关。这是一个小例子。#include#include#includeintmain(void){std::stringin="{ab}{cd}[ef]{gh}[ij][kl]";//theinput-stringstd::regexrx1("(\\{.+?})(.*)",std::regex::extended);//non-greedy?std::smatchmatch;if(regex_match(in,match,rx1)){printf("\n%s\n",match.str(1).c_str());}return0;}我希望{a

c++ - Xcode 6 的 Playground 功能适用于 Visual Studio 或其他使用 C++ 的 IDE?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。ImprovethisquestionApple如何将这个playground功能引入Swift和Xcode,您可以在编程时看到结果,这让我着迷。是否有适用于VisualStudio的插件/扩展程序,或为C++执行相同类型功能的不同IDE?提前致谢!

c++ - 确保当前线程持有 C++11 互斥锁

有没有办法判断C++11中的当前线程是否持有互斥锁?特别是我想确保类中的某些函数仅在调用线程持有锁时被调用(通过std::lock_guard、std::unique_lock或类似的东西)对于对象,std::mutex是一个成员变量。为了避免在对象被广泛使用时重复锁定和解锁,锁定mutex的责任需要由调用者负责,不能在每个单独的函数中,如果当前当调用这些函数中的任何一个时,线程没有锁定mutex,我想抛出异常。看来我不能只使用std::try_lock然后根据需要进行解锁,因为如果当前线程std::try_lock的行为是未定义的已经持有锁。 最佳答案

C++11 将 shared_ptr 转换为 vector 和类

我正在尝试将转换应用到shared_ptr并存储到shared_ptr,同时还在类中使用函数。我创建了这个例子:#include#include#include#includeusingnamespacestd;classMyClass{public:intfactor=0;MyClass(constintfactor_):factor(factor_){}shared_ptr>mult(shared_ptr>numbers){shared_ptr>result(newvector());transform(numbers->begin(),numbers->end(),result-

c++ - c++11中已删除函数的返回类型

在C++11中,我们可以使用delete禁用复制构造函数和赋值运算符:classA{A(constA&)=delete;A&operator=(constA&)=delete;}有一天,我的同事使用void返回类型而不是引用。classA{A(constA&)=delete;voidoperator=(constA&)=delete;}这个也可以吗?例如,如果我有Aa,b,c;a=b=c;这行得通吗? 最佳答案 返回类型不是c++中函数签名的一部分(这也是为什么不能仅通过返回类型重载函数的原因)。所以没关系,因为在名称查找期间仍会找

c++ - Xcode 为 c++ 中的显式死代码提供了奇怪的解决方案?

Hashiwokakero,我正在编写一个程序来解决类似数独的谜题。我有一些看起来像这样的代码:if(bridgesLeft[row][col]==1){doSomething();}elseif(bridgesLeft[row][col]==2){doSomethingElse();}elseif(bridgesLeft[row][col]==3){doAnotherThing();}...我意识到我在doSomethingElse()函数中放置了一个错误,所以我没有删除那个block,而是添加了elseif(bridgesLeft[row][col]==2&&false)以保证错误

c++ - 如何创建 C++ 11 非默认可构造分配器?

这个主题出现在这个线程中,关于VisualStudio2015的std::list::sort()的变化:`std::list::sort()`-whythesuddenswitchtotop-downstrategy?新版本的std::list::sort不需要默认可构造的std::list,因为它只使用迭代器,并且不创建任何本地列表,所以列表是否可以并不重要'不是默认构造的。之前的版本使用本地列表(注意-列表的每个实例都涉及一个哨兵节点的动态分配):typedeflist_Myt;//...constsize_t_MAXBINS=25;_Myt_Templist,_Binlist[

C++、xcode 和终端,绝对基础

我有一个Xcode项目,只是xcodeforc++附带的标准helloworld应用程序。我点击构建并运行,它运行,它完成,我什么也没看到。如何在终端中打开它? 最佳答案 shift+cmd+Y打开调试器和控制台。你可以在那里看到所有的输出。或者,您可以从菜单栏中选择“查看”,然后单击“显示调试区域”。这个调试区域就像终端一样显示程序的输出。 关于C++、xcode和终端,绝对基础,我们在StackOverflow上找到一个类似的问题: https://sta