草庐IT

0x00000001

全部标签

c++ - enable_shared_from_this(c++0x): what am I doing wrong?

我只是在研究即将推出的新C++标准中的智能指针。但是我没有掌握shared_from_this函数的用法。这是我所拥有的:#include#includeclassCVerboseBornAndDie2:publicstd::enable_shared_from_this{public:std::stringm_Name;CVerboseBornAndDie2(std::stringname):m_Name(name){std::coutp=vbad->shared_from_this();}并在行中抛出std::bad_weak_ptr异常std::shared_ptrp=vbad-

支持 C++0x 功能的 C++ 编译器?

哪里有支持C++0x特性的C++编译器? 最佳答案 GCC支持其中的一部分。参见here. 关于支持C++0x功能的C++编译器?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/657511/

c++ - 编译器支持即将推出的 C++0x

是否有对新的C++0x有良好支持的编译器?我使用GCC,但不幸的是,当前版本4.4对新功能的支持很差。 最佳答案 Apache标准C++库项目维护awikipageofmajorcompilers'C++0xsupport.以下是描述其C++0x支持的供应商页面的链接:GCCCodeGearC++Builder2009IntelC++CompilerVisualC++2009和2010-参见here,here,或hereComeauC++ 关于c++-编译器支持即将推出的C++0x,我们

C++0x Lambda 到 VS 2010 中的函数指针

我正在尝试使用lambda代替函数指针传递,但VS2010似乎无法转换它。我试过像这样使用std::function但它崩溃了,我不知道我这样做是否正确!#include#include#include#include#includevoidmain(){std::functionf=[](void*)->void{std::cout(),0);getch();}令我感到奇怪的是,编译器无法将这样的lambda转换为简单的函数指针,因为它不捕获任何变量-即使它捕获了变量,我也想知道可以做什么。每个lambda的类型是否唯一?所以我可以修改一个模板函数,使用lambda的类型作为模板参数

c++ - 无法创建其中包含空元组的一元元组 (c++0x)

我在试验元组时遇到了创建元组的问题。代码示例如下。//a.cpp#includeusingnamespacestd;intmain(){autote=make_tuple();//thislineisokautotte=make_tuple(te);//thislinegivesanerror.return0;}我用g++4.5(g++-std=c++0xa.cpp)和MSVC++2010编译了它。两个编译器都在main()的第二行给我一个错误。我的问题是:由于“te”是一个定义明确的变量,为什么不能创建另一个以te为内容的元组。这个语义正确吗?我想这是一种边界情况,但如果算术正确,应

constexpr 和返回模板函数的 C++0x 错误

我试图找到问题的解决方案C++templatenon-typeparametertypededuction,它不涉及调用f的模板参数,而是隐式地为模板参数选择正确的类型。因为constexpr应该保证一个函数只包含编译时常量,并且在编译时被评估(至少我认为它是这样做的),我认为它可能是这个问题的解决方案.所以我想到了这个:templatevoidf(){}//firstitriedthis:templateautoget_f(Tt)->decltype(&f){returnf;}//secondtry:templateconstexprvoid(&get_f(Tt))(){return

c++ - ADsOpenObject() 返回 -2147024882 (0x8007000E) -> OUT_OF_MEMORY

我有一个用于身份验证的C++DLL,它会在每次登录时由Windows服务加载。在该DLL中,我使用了WindowsADSI函数ADsOpenObject()从ActiveDirectory获取用户对象。HRESULThr=ADsOpenObject(L"LDAP://rootDSE",L"username",L"password",m_dwADSFlags,IID_IDirectorySearch,(void**)&m_DSSearch);通常这多年来一直有效。但目前我得到错误代码-2147024882(0x8007000E)这是OUT_OF_MEMORY.当我重新启动使用我的DLL的

c++ - 构建 Qt - NMAKE : fatal error U1077: 'cd' : return code '0x2'

我正在尝试使用msvc2015通过静态链接构建Qt5.5,但我遇到了以下错误(实际上有很多错误,但我只列出了一些,它们都是一样的):K:\Archivosdeprograma\MicrosoftVisualStudio14.0\VC\INCLUDE\cstdint(50):errorC2873:'uint_fast64_t':symbolcannotbeusedinausing-declarationK:\Archivosdeprograma\MicrosoftVisualStudio14.0\VC\INCLUDE\cstdint(52):errorC2039:'intmax_t':i

c++ - C++0x 中的纯/常量函数

在C++98/C++03中,没有pure/constfunctionkeywords在语言中。这在C++0x中有变化吗?如果是这样,是否可以在函数对象(std::function)上设置这样的标志?所以我可以传递一些函数指针或lambda函数,并额外提供它是一个纯/const函数的信息?被调用函数可能具有针对此类函数的优化执行路径。有什么方法可以检查给定的函数是否是纯函数/常量?IE。例如,如果如上所述std::function上有这样的标志,我可能只检查该标志。但也许还有更通用的方法。如果没有改变,为什么不呢?我认为获得这样的支持可能会非常有用。有没有关于它的公开提案?

c++ - 在 VC 2010 中禁用 C++0x 功能?

VC++2010中的C++0x模式是否有关闭开关?我正在从事一个应该在非0x编译器上编译的项目,因此我想根据当前标准进行编译。(即使没有直接使用新功能,仍然有一些微妙之处使C++0x更加宽松)。我发现最接近的开关是ConfigurationProperties->C/C++->Language->DisableLanguageExtensions但事实并非如此。 最佳答案 不,语言扩展通常是非标准的供应商特定添加。C++0X特性:没有直接的方法可以关闭这些特性。一种解决方法是不使用它们。但是,请注意,不同版本的VC运行时在性能上仍然