boost :: shared_polymorphic_downcast在boost 1.53.0中消失了.我应该用什么呢?

Jim*_*son 6 c++ boost shared-ptr

boost::shared_polymorphic_downcast1.52.01.53.0之间消失.在发行说明中没有提到任何内容,并且提交(r81463)仅包含神秘的日志消息"Update shared_ptr casts".

我不清楚我现在应该使用什么,或者为什么删除此功能.有人可以帮忙吗?

编辑:感谢大家的见解.我发现自己有点沮丧,提升会在没有任何理由或通知的情况下在版本中进行向后兼容的更改,我也发现它们删除了有用的功能令人沮丧.但根据回复,我可以用两行代码而不是一行来做我想要的,所以我认为这就足够了.尽管如此,我仍然没有回答这个问题,因为没有人提供一种简单的方法来获得旧的行为boost::shared_polymorphic_downcast; 也就是说,使用dynamic_cast何时启用调试,何时启用调试static_cast.

GMa*_*ckG 10

使用boost::dynamic_pointer_cast.

它所涉及的更新是为了匹配C++ 11的设计.在C++ 11中,指针强制转换被概括为函数std::dynamic_pointer_cast(和朋友)以允许我们编写:

template <typename PointerToBase> // models Base* in some way
void foo(PointerToBase ptr)
{
    auto ptrToDerived = std::dynamic_pointer_cast<Derived>(ptr);
}
Run Code Online (Sandbox Code Playgroud)

所以这PointerToBase可能是一个原始的Base*或一个std::shared_ptr<Base>,没有我们写的案例.

Boost当然只是想尽可能地匹配C++.