问题标签 [folly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 变量名中的花括号
最近我一直在浏览 facebooks folly library 的一些代码,看到一个名为
作为班级成员。我以前从未见过这样的东西,想知道是否有什么特殊含义。谷歌搜索只是让我在 boost code to 中找到了像这样的其他示例。
也许有人有解释。
c++ - 为什么我的 C++ 函数返回的向量在调用者中包含垃圾值?
我创建了一个简单的 C++ 程序来读取和标记来自 cin 的输入。但是,虽然我的辅助函数中的标记是正确的,但调用函数(main)中的标记是垃圾值。
例如,如果我输入“ab c”作为输入,我的辅助函数 (get_input_tokens) 中的标记向量包含“a”、“b”、“c”,但 main 中的标记向量包含“?” ,“?”,“”。
我的理解是向量应该按值返回给调用者,因此应该在调用者(主)中创建与原始向量相同的向量的新副本。谁能给我一些关于为什么会发生这种情况的想法?
folly::split 的参考:https ://github.com/facebook/folly/blob/master/folly/String.h#L403 。
c++ - 将 absl::flat_hash_set 与 folly::small_vector 一起使用
我正在尝试创建一个absl::flat_hash_set
of folly::small_vector
。添加对 absl::Hash 的自定义类型的支持的文档说:
类型的
AbslHashValue
重载只能在与所述类型相同的文件和命名空间中声明。给定类型的正确AbslHashValue
实现将通过 ADL 发现。
不幸的是,我不能这样做,因为我不控制库的源代码或安装。
所以我试过这个:
但是我得到了大量的模板错误,这些错误似乎表明我的类型不能被散列:
我能做些什么来让folly::small_vector
Abseil 可以散列吗?
c++ - 复制分配如何用于愚蠢::可选?
我正在阅读 folly::Optional 中的代码以进行复制分配,但我不清楚调用 to 究竟是如何construct()
将值分配给可选的。具体来说,construct()
这个表达式是如何工作的?
c++ - 为什么 sorted_vector_map 中的 [] 运算符?
我不明白运算符 [] 在 sorted_vector_map 中的作用。
- 具体当key不存在时,给数据结构增加什么值?
- 是什么
value_type(key, mapped_type())
? std::pair
它是默认的构造函数调用吗?- 是什么
mapped_type()
? - 它也是构造函数调用吗?
代码来自以下链接...
https://github.com/facebook/folly/blob/master/folly/sorted_vector_types.h#L1097
c++ - 使用移动构造函数放置新的位置与愚蠢的 small_vector 中的移动分配
在研究 constexpr 类向量容器的想法时,我遇到了愚蠢的 small_vector 容器。我正在阅读实现,并对以下部分感到困惑moveObjectsRightAndCreate
:
我的理解是:对于内存未初始化的数组部分,他们使用placement new with std::move
。对于先前从其中移动对象的数组部分,它们使用移动分配。
似乎主要区别在于是否使用移动构造函数或移动赋值,但我不确定我是否理解这些选择的含义。为什么不对这两种情况都使用placement new?为什么不对这两种情况使用移动分配?因为我们知道数组的大小,所以无论如何我们都不会在未初始化的内存上调用析构函数,对吧?
c++ - 是否可以通过在 C++ 中将返回类型从可选更改为非可选来覆盖函数?
在 C++ 中,我有一个返回类型为folly::Optional<int>
. 我的问题是:我们可以覆盖函数并int
在派生函数中返回吗?
我知道这在 Java 中是可行的。对于 C++,我搜索了一些文档,发现 C++ 允许协变返回类型用于覆盖函数。但是我没有发现可选/非可选是否是协变返回类型的情况。
c++ - 愚蠢的 IOThreadPoolExecutor 与 CPUThreadPoolExecutor
我正在尝试更多地了解我正在处理的这个代码库使用的异步抽象。
我正在阅读Folly
库中两个异步执行器池、IOThreadPoolExecutor
绑定io
任务和CPUThreadPoolExecutor
绑定cpu
任务的文档(https://github.com/facebook/folly/blob/master/folly/docs/Executors.md)。
我正在阅读描述,但我不明白主要区别。它似乎IOThreadPoolExecutor
是围绕event_fd
和epoll
循环构建的,并CPUThreadPoolExecutor
使用队列和信号量。
但这并没有告诉我太多关于好处和权衡的信息。
c++ - 关于 fbstring initsmall() 方法的问题
我正在阅读愚蠢的源代码。当我阅读 fbstring 的实现时,我对 initsmall 函数的实现感到困惑。
如果bytesize为 17,wordsize为 8,则(byteSize + wordWidth-1) / wordWidth为 3。reinterpret_cast<const size_t >(data)[2]是否访问data的第 17 个 char 元素和以下 7 个元素?不会越界了吧?
下面是实现代码,完整代码在https://github.com/facebook/folly/blame/master/folly/FBString.h
folly - 如何在 Facebook 愚蠢库中运行测试?
我已经在我的 Ubuntu 20.04.02 系统上下载并构建了 Facebook Folly 代码。我构建并安装了 googletest,并确保使用 CMake 标志-DBUILD_TESTS=ON
来启用构建测试。
但是我该如何运行测试呢?我环顾了构建和源代码树,没有看到任何明显的东西。谷歌也没有帮助。
当我make test
在_build
目录中运行时,我得到