草庐IT

0x0000007c

全部标签

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运行时在性能上仍然

c++ - C++、D 和 C++0x 之间的主要区别是什么?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。我们最近都更频繁地遇到和听到它们,我想在stackoverflow上对它们进行一些很好的比较。链接、引用和文章也很好。

c++ - C++0x 中是否有本地化支持的更新?

我使用C++语言环境方面的工作越多,我就越了解---它们已损坏。std::time_get--与std::time_put不对称(因为它在Cstrftime/strptime中)并且不允许使用AM轻松解析时间/PM标记。我discovered最近,简单的数字格式可能会在某些区域设置下产生非法的UTF-8(例如ru_RU.UTF-8)。std::ctype非常简单,假设可以在每个字符的基础上完成上/下(大小写转换可能会改变字符数并且它取决于上下文)。std::collat​​e--不支持排序强度(区分大小写或不区分大小写)。无法在时间格式中指定不同于全局时区的时区。还有更多...有人知道

C++0x 问题:恒定时间插入 std::set

根据thispage,如果我使用,我可以实现恒定时间插入iteratorstd::set::insert(iteratorposition,constvalue_type&x);我提供的position迭代器直接“先于”正确的(按顺序)插入点。现在我关心的情况是,如果我知道我要插入的值在最后(因为它是最大的),例如:setfoo={1,2,3};foo.insert(4);//thisisaninefficientinsert根据上述标准,我应该将最后一个元素foo.end()-1传递给insertnotfoo。结束()。我的理解正确吗?如果我通过foo.end()会发生什么?它是O(