草庐IT

explicit

全部标签

c++ - 威科比 - 错误 : Explicit instantiation shall not use ‘inline’ specifier [-fpermissive]

我正在尝试制作/编译wykobi库(计算几何)使用给定的makefile,但我不断收到错误:error:explicitinstantiationshallnotuse‘inline’specifier[-fpermissive]我该如何解决这个问题? 最佳答案 您可以从命令行覆盖makefile中设置的编译器标志:makeOPTIONS_LIBS="-fpermissive-O3-o"OPTIONS="-fpermissive-O3-o" 关于c++-威科比-错误:Explicitin

c++ - 在附加之前将 "number 0"转换为 char

为什么在使用string::operator+将其附加到字符串之前,我需要将number0显式转换为char?usingnamespacestd;intmain(){strings="";s+=65;//nocompileerrors+=(char)0;//requiresexplicitcast//s+=0;//compileerrorreturn0;}更新澄清:我的目标是将一个字节(包含任何值,包括零)附加到现有的字节数组。 最佳答案 因为s+=0对于以下+=的重载运算符不明确string&operator+=(constcha

c++ - 在附加之前将 "number 0"转换为 char

为什么在使用string::operator+将其附加到字符串之前,我需要将number0显式转换为char?usingnamespacestd;intmain(){strings="";s+=65;//nocompileerrors+=(char)0;//requiresexplicitcast//s+=0;//compileerrorreturn0;}更新澄清:我的目标是将一个字节(包含任何值,包括零)附加到现有的字节数组。 最佳答案 因为s+=0对于以下+=的重载运算符不明确string&operator+=(constcha

c++ - 为什么双参数构造函数以显式关键字开头?

我和我的伙伴最近一直在阅读leveldb源代码。我们遇到了这个问题。在leveldbdb/skiplist.h文件,有一个构造函数声明:explicitSkipList(Comparatorcmp,Arena*arena);我知道带有单个参数的显式构造函数意味着构造函数参数没有隐式类型转换。但是带有显式关键字的双参数构造函数是什么意思?是C++11的新规则吗?谢谢。 最佳答案 使用C++11,您可以使用braced-init-lists代替其他一些表达式,这会有所不同。例如,您可以在return语句中使用它们:SkipListfoo

c++ - 为什么双参数构造函数以显式关键字开头?

我和我的伙伴最近一直在阅读leveldb源代码。我们遇到了这个问题。在leveldbdb/skiplist.h文件,有一个构造函数声明:explicitSkipList(Comparatorcmp,Arena*arena);我知道带有单个参数的显式构造函数意味着构造函数参数没有隐式类型转换。但是带有显式关键字的双参数构造函数是什么意思?是C++11的新规则吗?谢谢。 最佳答案 使用C++11,您可以使用braced-init-lists代替其他一些表达式,这会有所不同。例如,您可以在return语句中使用它们:SkipListfoo

c++ - 防止在构造函数中进行不希望的转换

根据here,显式:Specifiesconstructorsandconversionoperators(sinceC++11)thatdon'tallowimplicitconversionsorcopy-initialization.那么,这两种技术是否相同?structZ{//...Z(longlong);//caninitializewithalonglongZ(long)=delete;//butnotanythingsmaller};structZ{//...explicitZ(longlong);//caninitializeONLYwithalonglong};

c++ - 防止在构造函数中进行不希望的转换

根据here,显式:Specifiesconstructorsandconversionoperators(sinceC++11)thatdon'tallowimplicitconversionsorcopy-initialization.那么,这两种技术是否相同?structZ{//...Z(longlong);//caninitializewithalonglongZ(long)=delete;//butnotanythingsmaller};structZ{//...explicitZ(longlong);//caninitializeONLYwithalonglong};

函数: "illegal use of explicit template arguments"的C++模板特化

以下模板特化代码:templatevoidspec1(){}测试用例1:template//compileerrorvoidspec1(){}测试用例2:template//compileerrorvoidspec1(){}产生以下编译错误:errorC2768:'spec1':illegaluseofexplicittemplatearguments有人知道为什么吗? 最佳答案 函数模板不能部分特化,只能完全特化,即:templatevoidspec1(){}为什么函数模板不能部分特化,你可能想readthis.当您部分特化(仅可

函数: "illegal use of explicit template arguments"的C++模板特化

以下模板特化代码:templatevoidspec1(){}测试用例1:template//compileerrorvoidspec1(){}测试用例2:template//compileerrorvoidspec1(){}产生以下编译错误:errorC2768:'spec1':illegaluseofexplicittemplatearguments有人知道为什么吗? 最佳答案 函数模板不能部分特化,只能完全特化,即:templatevoidspec1(){}为什么函数模板不能部分特化,你可能想readthis.当您部分特化(仅可

c++ - 使用花括号初始化列表 : ambiguous or not? 调用显式构造函数

考虑以下几点:structA{A(int,int){}};structB{B(A){}//(1)explicitB(int,int){}//(2)};intmain(){Bparen({1,2});//(3)Bbrace{1,2};//(4)}(4)中brace的构造清晰明确地调用了(2)。在clang中,(3)中paren的构造明确地调用(1),而在gcc5.2中,它无法编译:main.cpp:Infunction'intmain()':main.cpp:11:19:error:callofoverloaded'B()'isambiguousBparen({1,2});^main.c