草庐IT

exception_ptr

全部标签

c++ - unique_ptr 和多态性

我有一些当前使用原始指针的代码,我想更改为智能指针。这有助于以各种方式清理代码。无论如何,我有返回对象的工厂方法以及调用者管理它们的责任。所有权不共享,所以我认为unique_ptr是合适的。我返回的对象通常都派生自一个基类Object。例如,classObject{...};classNumber:publicObject{...};classString:publicObject{...};std::unique_ptrState::NewNumber(doublevalue){returnstd::unique_ptr(newNumber(this,value));}std::u

c++ - unique_ptr 和多态性

我有一些当前使用原始指针的代码,我想更改为智能指针。这有助于以各种方式清理代码。无论如何,我有返回对象的工厂方法以及调用者管理它们的责任。所有权不共享,所以我认为unique_ptr是合适的。我返回的对象通常都派生自一个基类Object。例如,classObject{...};classNumber:publicObject{...};classString:publicObject{...};std::unique_ptrState::NewNumber(doublevalue){returnstd::unique_ptr(newNumber(this,value));}std::u

c++ - 为什么 std::uncaught_exception 会变成 std​​::uncaught_exceptions?

我刚刚注意到了http://en.cppreference.com/w/cpp/error/uncaught_exceptionC++17将用std::uncaught_exceptions()替换返回bool的std::uncaught_exception(),它返回一个int。对此标准的补充说明如下:http://isocpp.org/files/papers/n4259.pdf它没有提供理由,但确实说明了[Note:Whenuncaught_exceptions()>0,throwinganexceptioncanresultinacallofstd::terminate()(1

c++ - 为什么 std::uncaught_exception 会变成 std​​::uncaught_exceptions?

我刚刚注意到了http://en.cppreference.com/w/cpp/error/uncaught_exceptionC++17将用std::uncaught_exceptions()替换返回bool的std::uncaught_exception(),它返回一个int。对此标准的补充说明如下:http://isocpp.org/files/papers/n4259.pdf它没有提供理由,但确实说明了[Note:Whenuncaught_exceptions()>0,throwinganexceptioncanresultinacallofstd::terminate()(1

c++ - 在嵌入式环境中替代 boost::shared_ptr

我在具有GCC版本2.95的嵌入式linux环境中使用C++。我无法用bcp提取boost::shared_ptr文件,它太重了。我想要的是boost::shared_ptr的简单智能指针实现,但没有所有boost开销(如果可能的话......)。我可以想出我自己的版本阅读boost源,但我担心会漏掉一个或多个点,制造一个错误的智能指针似乎很容易,而且我不能承受有错误的实现。那么,boost::shared_ptr(或任何引用计数等效智能指针)的“简单”实现或实现示例是否存在我可以使用或可以作为灵感的? 最佳答案 如果您不需要混合s

c++ - 在嵌入式环境中替代 boost::shared_ptr

我在具有GCC版本2.95的嵌入式linux环境中使用C++。我无法用bcp提取boost::shared_ptr文件,它太重了。我想要的是boost::shared_ptr的简单智能指针实现,但没有所有boost开销(如果可能的话......)。我可以想出我自己的版本阅读boost源,但我担心会漏掉一个或多个点,制造一个错误的智能指针似乎很容易,而且我不能承受有错误的实现。那么,boost::shared_ptr(或任何引用计数等效智能指针)的“简单”实现或实现示例是否存在我可以使用或可以作为灵感的? 最佳答案 如果您不需要混合s

c++ - 为什么不 ~ 后跟::parse

在AndreiAlexandrescu关于错误处理的演讲中:见C++andBeyond2012:AndreiAlexandrescu-SystematicErrorHandlinginC++(大约30分钟)Andrei提供以下代码:~Expected(){usingstd::exception_ptr;if(gotHam)ham.~T();elsespam.~exception_ptr();}这个析构函数正在清理一个union,它包含一些类型T或一个std::exception_ptr。使用placementnew填充union。Andrei然后解释说usingstd::excepti

c++ - 为什么不 ~ 后跟::parse

在AndreiAlexandrescu关于错误处理的演讲中:见C++andBeyond2012:AndreiAlexandrescu-SystematicErrorHandlinginC++(大约30分钟)Andrei提供以下代码:~Expected(){usingstd::exception_ptr;if(gotHam)ham.~T();elsespam.~exception_ptr();}这个析构函数正在清理一个union,它包含一些类型T或一个std::exception_ptr。使用placementnew填充union。Andrei然后解释说usingstd::excepti

c++ - 我应该在移动构造函数中 std::move 一个 shared_ptr 吗?

考虑:#include#include#include#include#include#includeusingnamespacestd;classGizmo{public:Gizmo():foo_(shared_ptr(newstring("bar"))){};Gizmo(Gizmo&&rhs);//ImplementedBelowprivate:shared_ptrfoo_;};/*//doesn'tusestd::moveGizmo::Gizmo(Gizmo&&rhs):foo_(rhs.foo_){}*///Doesusestd::moveGizmo::Gizmo(Gizmo&

c++ - 我应该在移动构造函数中 std::move 一个 shared_ptr 吗?

考虑:#include#include#include#include#include#includeusingnamespacestd;classGizmo{public:Gizmo():foo_(shared_ptr(newstring("bar"))){};Gizmo(Gizmo&&rhs);//ImplementedBelowprivate:shared_ptrfoo_;};/*//doesn'tusestd::moveGizmo::Gizmo(Gizmo&&rhs):foo_(rhs.foo_){}*///Doesusestd::moveGizmo::Gizmo(Gizmo&