以下是实现具有修改语义的共享指针的尝试operator==
:
template <typename T>
struct deref_shared_ptr: private std::shared_ptr<T> {
using Base = std::shared_ptr<T>;
// ... using statements to include functionality from the base.
bool operator==(const deref_shared_ptr rhs) const {
return (**this == *rhs);
}
};
我正在努力实现std::make_shared
这种类型的等价物。这是我的尝试:
template< class T, class... Args >
deref_shared_ptr<T> make_deref_shared( Args&&... args ) {
return reinterpret_cast<deref_shared_ptr<T>>(std::make_shared<T>(args...));
}
这不起作用:编译器 ( g++ 5.4.0
) 抱怨无效转换。为什么它不起作用,我应该怎么做而不是这个演员?