草庐IT

explicit-specifier

全部标签

c++ - 什么时候加载 DLL : Implicit Linking VS Explicit Linking

我认为隐式链接会在应用程序启动时立即加载DLL,因为它也称为“加载时动态链接”。但是我在下面的链接中发现了一些奇怪的解释(https://msdn.microsoft.com/en-us/library/253b8k2c(VS.80).aspx)。隐式链接Liketherestofaprogram'scode,DLLcodeismappedintotheaddressspaceoftheprocesswhentheprocessstartsupanditisloadedintomemoryonlywhenneeded.Asaresult,thePRELOADandLOADONCALLc

C++11 initializer_list 构造函数标记为 "explicit"

我能否将explicit与init-list构造函数一起使用,以确保像{a}这样的表达式不会导致意外的隐式转换?还有一个想法:应该我担心吗?编写{a}比简单地编写a不太可能出错,但另一方面,从代码中我们可能仍然不清楚我们正在构建一个通过隐式转换对象。classFoo{explicitFoo(std::initializer_listilist){/*...*/}}; 最佳答案 你不能。它确实导致意外的隐式转换。但是,意外的隐式转换是不允许的,编译器将拒绝您的程序。然而,这不会阻止编译器选择或考虑它。示例voidf(Foo);void

c++ - 来自 Xcode 8.3.2 : Non-portable path to file - specified path differs in case from file name on disk 的错误警告

出于某种原因,我的代码库突然开始收到数以千计的此类警告。但到目前为止,所有有问题的文件和路径都是完全正确的,与我在磁盘上看到的与Finder相匹配。他们是不是在暗地里另有幕后?当问题实际上并不存在时,为什么Xcode会生成这些警告?尽管http://stackoverflow.com/questions/43067017/non-portable-path-to-file-file-h-specified-path-differs-in-case-from-file-na是关于相同的警告,在这种情况下我已经验证导入路径与磁盘上的文件名匹配。 最佳答案

C++:我可以做一个赋值运算符 "explicit"吗

我的任务是迁移C++类库中的错误处理概念。以前简单返回bool(成功/失败)的方法应修改为返回一个Result对象,该对象传达机器可读的错误代码和人类可读的解释(以及更多在这里无关紧要的内容)。遍历数千行代码很容易出错,因此我尝试从编译器获得对此任务的最佳支持。我的结果类在其他成员方法中有一个从代码构造结果的构造函数和代码的赋值运算符:classResult{public:typedefunsignedlongResultCode;explicitResult(ResultCodecode);//(1)Result&operator=(ResultCodecode);//(2)};备注

c++ - 在使用 Clang 编译 CRTP Singleton 时,如何解决声称缺少 "explicit instantiation declaration"的问题?

我们正在使用curiouslyrecurringtemplatepattern实现单例。但是,在最近的Clang版本中,我们收到了-Wundefined-var-template警告。建议的修复方法是添加“显式实例化声明”。我试图这样做,但后来在定义单例模板类成员变量的编译单元中出现有关“实例化后的显式特化”的错误。解决此警告突出显示的问题的适当构造是什么?简化详细信息(已删除大部分逻辑,以制作MCVE):单例基础.hh:templateclassSingletonBase{public:staticT*get_instance(){if(!instance_){instance_=T

c++ - 什么合法代码可以触发 C4523 "multiple destructors specified"Visual C++ 警告?

根据MSDN,VisualC++可以发出C4523warning'class':指定了多个析构函数。怎么可能出现这种情况?我尝试了以下方法:classClass{~Class();~Class(int);};这会产生一个析构函数必须有一个'void'参数列表错误和C4523警告以及以下内容classClass{~Class();~Class();};这会产生成员函数已经定义或声明错误以及以下内容classClass{int~Class();~Class();};这会产生析构函数不能有返回类型错误。那么我如何有C4523警告但没有错误呢? 最佳答案

c++ - 外部模板 'inconsistent explicit instantiations'

给定#include//CaseI:errorerrorC2961:'std::vector>':inconsistentexplicitinstantiations,apreviousexplicitinstantiationdidnotspecify'externtemplate'templateclassstd::vector;externtemplateclassstd::vector;//CaseII:fine//externtemplateclassstd::vector;//templateclassstd::vector;//CaseIII:fine//externte

c++ - 主区域 : "master region may not be closely nested inside of work-sharing or explicit task region" 的 OpenMP for 循环

我有以下代码,我认为它应该显示一个进度条来近似整个过程的进度(因为循环的每个并行线程应该以大致相同的速度进行)#pragmaompparallelforfor(longintx=0;x但是,我收到以下错误:warning:masterregionmaynotbecloselynestedinsideofwork-sharingorexplicittaskregion[enabledbydefault]现在,当我运行代码时,我确实得到了想要的结果。但我不喜欢警告。为什么这会给我一个警告,是否有更好的方法来完成此操作?谢谢! 最佳答案

c++ - 在 Windows 7 上使用 SHA2-512 (CALG_SHA_512) 返回 "Invalid Algorithm Specified"

我尝试在Windows7上使用SHA2-512和CryptoAPI,但是,调用CryptCreateHash失败,GetLastError()=2148073480=0x80090008,即“无效算法”指定的”。根据https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549%28v=vs.85%29.aspxSHA2应该从WindowsXPSP3开始可用。这是我使用的代码:HCRYPTPROVhCryptProv;CryptAcquireContext(&hCryptProv,nullptr,nullptr,PRO

c++ - 错误 MSB8008 : Specified platform toolset (v120) is not installed or invalid

这个问题在这里已经有了答案:WhatdoIneedtoinstallforC++project/VS2013onTeamCityserverorTeamFoundationBuildService?(1个回答)关闭8年前。我已经下载了一个C++项目。我打开了.sln文件并尝试构建项目。我收到以下错误:错误MSB8008:指定的平台工具集(v120)未安装或无效。请确保选择了受支持的PlatformToolset值。我已经检查过平台工具集是否设置为v120。这里有什么问题?