异常、移动语义和优化:受编译器支配(MSVC2010)?
在对我的旧异常类层次结构进行一些升级以利用一些 C++11 功能时,我做了一些速度测试并发现了一些令人沮丧的结果。所有这一切都是用x64位MSVC++2010编…
C++ - Boost.Promise、Boost.Unique_Future 和移动语义
我正在关注 Bartosz Milewski 此处 的一些教程,我发现这些教程非常有用。 然而,由于作者使用了 C++11 线程标准的 just::thread 实现(其中我还没有…
使用隐式可转换对象调用移动重载函数时出现编译错误
该程序无法使用clang++ test.cpp -std=c++0x进行编译: class A { public: A() {} A(const A&) {} A(A&&) {} A& operator = (const A&) { return *thi…
既然我们有了移动语义,那么专门化 std::swap 是否已被弃用?
可能的重复: 移动语义 == 自定义交换函数已过时? 这就是 std ::swap 看起来像 C++11 中的: template void swap(T& x, T& y) { T z = std::move(x)…
std::move 的类型是什么?
此代码按预期工作(在线此处)。 最后,v 为空,w 也不为空,因为它窃取了 v 的内容。 vector v; v.push_back(1); cout << "v.size(): " << v.size() …
unique_ptr C++03 仿真中的 move 函数
我试图了解 C++03 模拟 unique_ptr 是如何实现的。 unique_ptr 很像 std::auto_ptr 但更安全。在 auto_ptr 隐式(即静默)转移所有权的情况下,它会抛…
我可以列表初始化仅移动类型的向量吗?
如果我通过 GCC 4.7 快照传递以下代码,它会尝试将 unique_ptr 复制到向量中。 #include #include int main() { using move_only = std::unique_ptr; …
初始化列表和移动语义
我可以将元素移出 std::initializer_list 吗? #include #include template void foo(std::initializer_list list) { for (auto it = list.begin(); i…
当向量增长时如何强制移动语义?
我有一个特定类 A 的对象的 std::vector 。该类非常重要,并且定义了复制构造函数和移动构造函数。 std::vector myvec; 如果我用 A 对象填充向量(例…
移动构造函数和静态数组
我一直在探索 C++ 中 移动构造函数 的可能性,并且我想知道在下面的示例中有哪些方法可以利用此功能。考虑以下代码: template class Foo { public: F…
C++ 中的移动语义和 R 值引用弦乐构造
C++11 是否会在参数字符串构造中移动语义和右值引用(例如 do_something_with_string(std::string("abc")) 假设声明), void do_something_with_stri…
std::move 如何将表达式转换为右值?
我不完全理解 std::move() 的实现。 也就是说,我对 MSVC 标准库中的这种实现感到困惑: 模板排队 类型名 tr1::_Remove_reference::_Type&& 移动(_Ty…