问题标签 [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.

0 投票
1 回答
151 浏览

c++ - 变量名中的花括号

最近我一直在浏览 facebooks folly library 的一些代码,看到一个名为

作为班级成员。我以前从未见过这样的东西,想知道是否有什么特殊含义。谷歌搜索只是让我在 boost code to 中找到了像这样的其他示例。

也许有人有解释。

0 投票
1 回答
217 浏览

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 。

0 投票
0 回答
330 浏览

c++ - 将 absl::flat_hash_set 与 folly::small_vector 一起使用

我正在尝试创建一个absl::flat_hash_setof folly::small_vector。添加对 absl::Hash 的自定义类型的支持的文档说:

类型的AbslHashValue重载只能在与所述类型相同的文件和命名空间中声明。给定类型的正确AbslHashValue实现将通过 ADL 发现。

不幸的是,我不能这样做,因为我不控制库的源代码或安装。

所以我试过这个:

但是我得到了大量的模板错误,这些错误似乎表明我的类型不能被散列:

我能做些什么来让folly::small_vectorAbseil 可以散列吗?

0 投票
1 回答
190 浏览

c++ - 复制分配如何用于愚蠢::可选?

我正在阅读 folly::Optional 中的代码以进行复制分配,但我不清楚调用 to 究竟是如何construct()将值分配给可选的。具体来说,construct()这个表达式是如何工作的?

0 投票
2 回答
153 浏览

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

0 投票
1 回答
152 浏览

c++ - 使用移动构造函数放置新的位置与愚蠢的 small_vector 中的移动分配

在研究 constexpr 类向量容器的想法时,我遇到了愚蠢的 small_vector 容器。我正在阅读实现,并对以下部分感到困惑moveObjectsRightAndCreate

我的理解是:对于内存未初始化的数组部分,他们使用placement new with std::move。对于先前从其中移动对象的数组部分,它们使用移动分配。

似乎主要区别在于是否使用移动构造函数或移动赋值,但我不确定我是否理解这些选择的含义。为什么不对这两种情况都使用placement new?为什么不对这两种情况使用移动分配?因为我们知道数组的大小,所以无论如何我们都不会在未初始化的内存上调用析构函数,对吧?

0 投票
0 回答
122 浏览

c++ - 是否可以通过在 C++ 中将返回类型从可选更改为非可选来覆盖函数?

在 C++ 中,我有一个返回类型为folly::Optional<int>. 我的问题是:我们可以覆盖函数并int在派生函数中返回吗?

我知道这在 Java 中是可行的。对于 C++,我搜索了一些文档,发现 C++ 允许协变返回类型用于覆盖函数。但是我没有发现可选/非可选是否是协变返回类型的情况。

0 投票
1 回答
634 浏览

c++ - 愚蠢的 IOThreadPoolExecutor 与 CPUThreadPoolExecutor

我正在尝试更多地了解我正在处理的这个代码库使用的异步抽象。

我正在阅读Folly库中两个异步执行器池、IOThreadPoolExecutor绑定io任务和CPUThreadPoolExecutor绑定cpu任务的文档(https://github.com/facebook/folly/blob/master/folly/docs/Executors.md)。

我正在阅读描述,但我不明白主要区别。它似乎IOThreadPoolExecutor是围绕event_fdepoll循环构建的,并CPUThreadPoolExecutor使用队列和信号量。

但这并没有告诉我太多关于好处和权衡的信息。

0 投票
1 回答
26 浏览

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

0 投票
0 回答
65 浏览

folly - 如何在 Facebook 愚蠢库中运行测试?

我已经在我的 Ubuntu 20.04.02 系统上下载并构建了 Facebook Folly 代码。我构建并安装了 googletest,并确保使用 CMake 标志-DBUILD_TESTS=ON来启用构建测试。

但是我该如何运行测试呢?我环顾了构建和源代码树,没有看到任何明显的东西。谷歌也没有帮助。

当我make test_build目录中运行时,我得到