c++ - 这个表达式是什么意思:bool(__args...)
问题描述
我刚刚在 C++ 的 STL 中偶然发现,在vector
标题中发现了一个非常令人惊讶的异常。
从一些不必要的垃圾中清理出来,归结为:(
这个片段可以在vector
STLvector
标头中的类中找到)
template<typename... _Args>
reference emplace_back(_Args&&... __args) {
push_back(bool(__args...));
return back();
}
void push_back(bool __x) {
if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr())
*this->_M_impl._M_finish++ = __x;
else
_M_insert_aux(end(), __x);
}
正如标题中已经概述的那样,我对bool(__args...)
这种对我来说毫无意义的表达感到非常惊讶。
我希望有人能给黑暗带来光明并帮助我。
编辑:回答,我有点懒
解决办法找到了,我有点懒。
我使用我的 IDE 方法解析器跳转到声明。
但遗憾的是,它把我引向了stl_bvector.h
上面的标题和给定的方法。
因为这个头文件似乎只处理std::vector<bool>
代码的实现,所以更有意义。
解决方案
我认为您正在检查std::vector<bool>
.
bool(__args...)
bool
正在从参数包__args...
(扩展为逗号分隔的表达式)构造一个临时值,然后将临时bool
值传递给push_back(bool)
.
推荐阅读
- asp.net-core - 如何强制 RazorPage RedirectToPage 执行 POST 而不是 GET
- java - 来自另一个应用程序的 MediaCodec 导致问题
- jquery-ui - jQueryUI 自动完成 - 无法显示返回的选择(Coldfusion)
- python - 如何修复python中的“字符串索引超出范围”错误?
- java - 动态数量的导航选项卡,其中包含 ListView
- vue.js - 托管应用程序后,npm run production 无法正常工作
- visual-studio-code - 在 Visual Studio Code 中使用相对文件 URI
- python - 对于要在有和没有虚拟环境的情况下运行的 Python 3 脚本,使用什么 shebang?
- c++ - 如何从其他 cpp 文件访问 QVector 中的值
- maven - 我们如何在 GoCD 中建立 maven 项目?