作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是在 C++14 模式下运行的 GCC 7.4:
size_t i = 8;
std::string strIndent { i, ' ' };
看起来不错,但我收到警告:
AnalyticsDBI.cpp:538:48: warning: narrowing conversion of ‘i’ from ‘size_t {aka long unsigned int}’ to ‘char’ inside { } [-Wnarrowing]
std::string strIndent { i, ' ' };
这是一个编译器错误吗?我不明白编译器如何选择错误的重载。应该是构造函数2,如图here .
最佳答案
使用 clang 编译显示它正在尝试调用 initializer_list<char>
构造函数,其中 size_t -> char
是缩小转换:
narrowing.cpp:5:26: error: non-constant-expression cannot be narrowed from type 'size_t' (aka 'unsigned long') to 'char' in initializer list [-Wc++11-narrowing]
std::string strIndent { i, ' ' };
^
narrowing.cpp:5:26: note: insert an explicit cast to silence this issue
std::string strIndent { i, ' ' };
^
static_cast<char>( )
1 error generated.
使用 () 代替将调用您想要的构造函数:
std::string strIndent(i, ' ');
关于c++ - g++ 是否错误地抛出 -Wnarrowing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60557227/
这是在 C++14 模式下运行的 GCC 7.4: size_t i = 8; std::string strIndent { i, ' ' }; 看起来不错,但我收到
我在一个体系结构中,默认情况下 char 被解释为 signed。 我构建了一个类似于 Qt5 documentation for QByteArray 中提到的 char 数组 : const ch
我正在尝试在 linux debian 9.5 中编译一个非常老的软件,我一直收到这个错误: janpdf/PDF.cpp: In member function ‘void PDF::OpenFil
这段代码有什么问题?我正在使用 GCC 6.3。 https://ideone.com/ektGEp a.cpp: In function ‘int main()’:`a.cpp:26:24: err
我是一名优秀的程序员,十分优秀!