language-lawyer相关内容

在 flexbox 中可见性:隐藏和可见性:折叠有什么区别?

在 CSS 弹性框布局模块中,说: 折叠的 flex 项目从渲染中完全移除,但留下了一个“支柱" 这是否和 visibility: hidden 一样?如果答案是肯定的,那么为什么要引入 visibility: collapse ? 解决方案 关于浏览器支持的说明: 截至 2017 年 7 月,Chrome (59) 不支持 可见性:折叠.下面带有 collapse 的代码示例 ..
发布时间:2021-12-31 12:56:08 前端开发

Chrome 和 Firefox 中的高度渲染方式不同

我发现如果我们使用 height:auto 或 height: 0~100% 设置块级元素而没有使用明确的值设置父级的高度及其块级child 有底部边距,那么它会在 Chrome 中计算不同的高度,但在 Firefox 中不会.对于设置 height: 1%: 的情况 http://codepen.io/anon/pen/BjgKMR html {背景:粉红色;}身体 {背景:黄色;}d ..
发布时间:2021-12-31 12:34:53 前端开发

大小小于 int 的位域是否应该作为积分提升的主题?

假设我有以下 struct: 结构体A{无符号整数 a : 1;无符号整数 b : 1;}; 我感兴趣的是表达式a + b 的类型.虽然从技术上讲位域具有小于 int 的“类型",因此可能应该发生积分提升,然后结果是 int 就像它恰好在 gcc 和 clang 中一样. 但是由于不可能提取位字段本身的确切类型,并且它总是会被推导出它的“大"类型(即 unsigned int 在这种情况 ..

Visual Studio 2015 - 编译器警告(级别 2)C4146

我的代码中有以下行 signed int test_case= -2147483648; 产生错误: C4146 一元减运算符应用于无符号类型,结果仍然无符号 但这仍然是有符号整数类型的数据范围: __int32 有符号、有符号 int、int –2,147,483,648 到 2,147,483,647 奇怪的是将它分配为 signed long 给出了同样的错误,即 ..

类模板构造函数在c ++ 20中可以有一个冗余的模板参数列表吗

据我所知,以下代码: template结构体{S ();}; 是格式良好的,即使构造函数声明中的 是多余的. 但是,在 gcc 主干上(但不是在 gcc10.2 上),使用 -std=c++20 会出现错误: error: ')' 标记前的预期非限定 ID3 |S ();^ 代码使用-std=c++20.这是一个错误,还是 C++20 中尚未在所有编译器中实现的重大更改? 解决 ..
发布时间:2021-12-30 15:35:02 C/C++开发

我真的需要为 const 对象实现用户提供的构造函数吗?

我有代码: class A {上市:A() = 默认值;私人的:国际我= 1;};int main() {常量 A;返回0;} 它在 g++ 上编译得很好(参见 ideone),但在 clang++ 上失败并出现错误: const 类型“const A"对象的默认初始化需要用户提供的默认构造函数 我在 LLVM bug-tracker 上报告了这个问题并得到了它无效. 我认为 ..
发布时间:2021-12-30 15:14:44 C/C++开发

是否允许枚举具有未列出的值?

说,我们有 enum E{富 = 0,条 = 1}; 现在,我们做 enum E v = ( enum E ) 2; 然后 开关( v ){案例富:doFoo();休息;案例栏:doBar();休息;默认://编译器是否需要遵守这一点?doOther();休息;} 由于上面的开关处理枚举的每个可能列出的值,是否允许编译器优化掉上面的 default 分支,或者在值的情况下具有未指定或未 ..
发布时间:2021-12-29 16:52:08 C/C++开发

我们真的需要“枚举类"吗?在 C++11 中?

当我们有时, struct E { enum E_ { HELLO };};//'E' 是可继承的 那我们为什么需要, enum class E { HELLO };//'E' 不可继承 IMO 2nd 版本没有提供比 1st 多的功能.我不认为引入 enum class 只是为了节省 2 个花括号 {};!我是否遗漏了任何重要方面? 作为一个小问题,除了语法之外,enum clas ..
发布时间:2021-12-29 16:49:06 C/C++开发

C++ 枚举从 0 开始吗​​?

如果我有一个 enum 不为枚举分配数字,它的序数值是否为 0?例如: enum enumeration { 零,一,二,三,四、五,六,七,八,九 }; 我找到了一篇帖子,其中提到 C99 标准需要 0 序数.但我知道 C++ 忽略了 C99 标准中的几件事.而且我还找到了使用序数值 1 见证编译器的帖子,我似乎也记得看,虽然我不能说那是多久以前. 我真的很想看到一个答案来证实 C++ ..
发布时间:2021-12-29 16:30:19 C/C++开发

stl 向量并发读取线程安全吗?

我正在开发一个应用程序,在该应用程序中,需要大量线程迭代一组字符串值,并尝试将其自己的数据与列表中的可用数据进行匹配. 我正在寻找以下用例: Vector 被初始化为 std::string 类型的几个元素.(假设对象名称是 strList).strList 将在应用程序启动时初始化. 所有线程将遍历 strList 以查看它的值是否与 strList 的至少一个元素匹配. 任何线 ..
发布时间:2021-12-28 22:45:21 C/C++开发

流错误指示器如何影响以下输入代码?

每个流都有“一个错误指示器,用于记录是否发生了读/写错误". 它通常很少由各种函数设置:fgetc(), fflush(), fseek(), .... 被各种函数清除:rewind(), clearerr(), fopen(), .... int ferror(FILE *stream) 报告状态. 当且仅当为 stream 设置了错误指示符时,ferror 函数返回非零 ..
发布时间:2021-12-26 13:16:13 其他开发

Rust 的确切自动解引用规则是什么?

我正在学习/试验 Rust,在我发现这种语言的所有优雅中,有一个特殊性让我感到困惑并且似乎完全不合适. Rust 在进行方法调用时会自动取消引用指针.我做了一些测试来确定确切的行为: struct X { val: i32 }impl std::ops::Deref for X {类型目标 = i32;fn deref(&self) ->&i32 { &self.val }}特质 M { ..
发布时间:2021-12-25 09:21:34 其他开发

实现没有未定义行为的 std::vector 之类的容器

这可能会让一些编码人员感到惊讶,尽管令人惊讶的是,如果没有编译器的非标准支持,就不可能实现 std::vector.问题本质上在于在原始存储区域上执行指针运算的能力.论文p0593:为低级对象操作隐式创建对象,出现在@ShafikYaghmour 回答中,清楚地揭示了针对存在的问题,提出对标准进行修改,以便于实现vector like container等法律级别的编程技术. 尽管如此,我想 ..

C 内存分配器和严格别名

即使在阅读了很多关于严格别名规则的内容后,我仍然感到困惑.据我了解,不可能实现遵循这些规则的合理内存分配器,因为 malloc 永远不能重用已释放的内存,因为内存可用于在每次分配时存储不同类型. 显然这是不对的.我错过了什么?您如何实现遵循严格别名的分配器(或内存池)? 谢谢. 编辑:让我用一个愚蠢的简单例子来澄清我的问题: //s == 0 释放池void *my_custo ..
发布时间:2021-12-24 17:05:31 其他开发

lambda 表达式中隐含的匿名类型

在这个问题中,用户@Holger 提供了一个答案 显示匿名类的不常见用法,这是我不知道的. 那个答案使用流,但这个问题与流无关,因为这种匿名类型构造可以在其他上下文中使用,即: String s = "深入研究 Java 的复杂性";Optional.of(new Object() { String field = s; }).map(anonymous ->anonymous.field ..
发布时间:2021-12-23 22:24:31 Java开发

通用 lambda 的熟悉模板语法

对于 c++20,建议为通用 lambdas 添加以下语法 p0428r2.pdf auto f = []( T t ) {}; 但是当前在 gcc 8 中的实现不接受以下实例化: f(""); 这是 gcc 中的实现错误还是缺少语言功能?我知道我们谈论的是提案而不是批准的规范. 完整示例(与模板函数语法比较): template void n( T t ) { std::cout ..
发布时间:2021-12-23 22:03:46 C/C++开发

是否使用未分配所有成员的结构未定义?

在块范围内考虑此代码: struct foo { unsigned char a;无符号字符 b;} x, y;x.a = 0;y = x; C [N1570] 6.3.2.1 2 说“如果左值指定了一个自动存储持续时间的对象,该对象可以用 register 存储类声明(从未获取其地址),并且对象未初始化(未使用初始化程序声明且在使用前未对其进行赋值),行为未定义." 虽然x的一个成员已 ..
发布时间:2021-12-23 17:29:48 其他开发