- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读关于 if consteval (§3.2) 的 C++ 论文,并看到一段显示 constexpr
strlen
实现的代码:
constexpr size_t strlen(char const* s) {
if constexpr (std::is_constant_evaluated()) {
for (const char *p = s; ; ++p) {
if (*p == '\0') {
return static_cast<std::size_t>(p - s);
}
}
} else {
__asm__("SSE 4.2 insanity");
}
}
我来这里是为了询问 else 分支中的 __asm__
语句。
我知道这是幽默,并不意味着要认真对待,但我仍然决定做一些研究,以防有人已经解释过。当我用谷歌搜索引用的消息时,我得到的结果不到 10 个,全部都是关于这段代码的。然后我研究了什么是SSE 4.2,发现它是一个CPU指令集,所以我真的不知道它在C++论文中出现的内容,有人有解释吗?感谢那些阅读我的文章的人。
最佳答案
cigien正确的是:
It's a placeholder to mean "some crazy SSE 4.2 stuff" :) It's not a real instruction
虽然公平地说,我不能把这个特别的笑话归功于我,它来自 David Stone 的 constexpr function parameters paper .
这里的重点并不是使用 SSE 指令实现 strlen
的最佳方式,而是如果您手动执行的话,有一种方法可以实现这一点:编写你的程序集,这可能会比手动循环更好,无论哪种方式,它绝对不是 constexpr 友好的——因此特定的指令列表与问题并不真正相关。不管它是什么,它都无法在编译时工作,因此需要将其切换出去。
关于c++ - "SSE 4.2 insanity"提案文件中的 "if consteval"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76395759/
今天下午我尝试解决Codility的demo测试。在思考了如何提高性能(并进行了一些搜索)之后,我创建了以下代码: function solution(A) { let array = [..
阅读提案 n4228 我读到以下代码: void f() { std::string s = "but I have heard it works even if you don't believe
现在,如果我在一个 css 文件中并开始输入内容并按 ctrl + space,我会得到自动完成建议,但是是否可以通过输入而不是实际按 来获得它ctrl + 空格键 ? 最佳答案 您可以通过转到 Se
正如async所说,pormise对象或简单数据(如数字或字符串)可以跟在await后面,当它是简单数据时,它就像sync一样,我写了以下第一个程序: let fs = require('fs');
大家好,我是煎鱼。 现在是 2021 年 8 月份了,根据 Go 语言发布周期的 2,8 原则。Go 1.17 即将发布,在写这篇文章时,现在已经进行到了 rc2: 这意味着
有人提议引入C#风格的async-await。我知道 Babel.js 将 ES6 转译为 ES5,但是有什么方法可以让它将 async-await 转译为 ES5? 最佳答案 Babel v6 从
提案 N3554 (A Parallel Algorithms Library)对于 C++14,建议(除其他事项外)似乎是当前 std::partial_sum 的并行版本,例如: template
我尝试在 Facelets 页面中激活 EL 提案,但是当我按 Ctrl+Space 时,它不起作用。由于其他问题,我成功激活了 JSF 标签提案,但 EL 提案不起作用。 如何在 Eclipse
我是一名优秀的程序员,十分优秀!