- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我观看了 Scott Meyers 在 GoingNative2013 “An Effective C++11/14 Sampler”上的演讲,他解释了 std::move_if_noexcept
的使用。
所以我认为应该有一个 std::forward_if_noexcept
来保证 forward
的异常安全?为什么标准库中没有这样的东西?有没有其他保证的可能?
最佳答案
前向语义已经是有条件的,即它们保留其参数的值类别。另一方面,移动无条件地将其参数的值类别(从左值变为右值)更改为右值(引用),std::move_if_noexcept
获得基于移动构造函数是否不抛出异常的结果值类别,有效地使其成为有条件的。
简而言之,std::forward
不会改变任何东西,它会保留值类别。另一方面,std::move
确实改变了值类别。所以引入std::move_if_noexcept
是说如果std::move
的改变会导致异常,那么什么都不要改变 ;不要动它。
我认为这里的基本原理也适用于 std::move
和 std::forward
的所有事物的预期惯用用法。在 Scott 关于“通用引用”、转发和移动的其他演讲之一(可能在 C++ 和 Beyond 2012)中,他非常强调转发的惯用用法,我认为这支撑了很多 std::forward
是以及如何使用它。它也可能像从未考虑过的那样简单。
我认为没有必要,或者至少当 std::forward
生效时需求减少了。
鉴于它可能有一个用例,实现一个不会太难;但我不确定一般用例。可以说,与可能的异常相关的条件以及所需的异常保证应该在执行转发的函数之外进行测试和处理。
template <class U, class T>
U wrapper(T&& arg)
{
return U(forward<T>(arg));
}
template <class U, class T>
U method()
{
T t;
// work with t
return wrapper<U>(move_if_noexcept(t));
}
诚然,这其中很多都处于“早期”阶段,因此可能会发生变化。
关于c++ - 为什么 C++11/14 中的 std::forward 没有 std::move_if_noexcept 对应项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25332738/
我想检查我的应用程序或系统中是否存在库。在 Java 中,我通常执行 System.loadlibrary,但是有谁知道 C 中类似的相应调用吗? 最佳答案 是dlopen打开一个库,dlsym 从加
我在 typescript 中输入以下内容 export type Excludable = T & { isExcluded?: boolean } 其中过滤值: export type Filte
我最近在我的应用程序中添加了一种方法,可以自动格式化 TextView ,从“50000”到“50,000”,效果绝对完美。现在我遇到的问题是,在我的应用程序中,有多个按钮功能可以从该 TextVie
SELECT * FROM conversations WHERE chatMembers LIKE '%1%'AND chatMembers LIKE '%10%' 对话表 id | chatMem
我正在编写一个需要将 Java Date() 值保存到 MySQL 数据库的 RESTful Web 服务,但是,我不确定 MySQL 中可以保存 Java Date() 的数据类型是什么,或者我是否
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
我曾尝试使用 swift 开发一款利用 iPhone 的 3D 触摸硬件的游戏。然而,当我将我的应用程序提交到 App Store 时,它被拒绝了,因为该游戏无法在 iPad 上玩。 我的问题是,
Qt 的有序关联容器对应项 std::map是QMap , std::set是QSet , 对于无序关联容器 std::unordered_map是QHash . 我应该用什么来代替std::unor
JavaScript 方法 String.fromCharCode() 在以下意义上与 Python 的 unichar() 等效: print unichr(213) # prints Õ on t
正如谷歌在 "Discontinuing support for JSON-RPC and Global HTTP Batch Endpoints" 中提到的那样,Google API 客户端库已重新
我正在使用 MapLayer 和 MapOverlay 在 map 中创建自己的路径/折线,GPS 捕获的所有点都存储在一个结构中,以便我可以访问它们。随时。 现在,我希望路径在用户操作 map (缩
我们使用 Adobe Flash Builder 创建由 Flex 提供支持的交互式 Web 应用程序。现在我们正在寻找替代方案,让我们在 UI 设计和迎合 HTML5 的编码方面拥有同样的开发便
我想知道Android/Java 中类似C#/C++ 中的GetTickCount 方法的相应方法吗? 最佳答案 Android 为 SystemClock.uptimeMillis() .请注意,u
我用 Vue + Phaser 开始了新项目,但是当我尝试加载 Assets 时,this.game.load.image 中的“load”和“add”返回“undefined”。我尝试从 JS 文件
我是一名优秀的程序员,十分优秀!