【发布时间】:2016-04-08 12:41:55
【问题描述】:
我第一次问问题,所以祈祷。
我想提供一个专门的 shared_ptr::operator-> 以下内容无法在 gcc 4.8.3 上编译
template<>
widget* std::shared_ptr<widget>::operator->() const
{
return nullptr;
}
我得到以下编译错误 错误:在“std::shared_ptr”中没有声明成员函数“operator->”
我已经尝试了一些关于如何专业化的变体,但我一直遇到同样的错误。例如,将其包装在命名空间 std 范围内,还尝试了尾随 reutrn 类型,使其成为 noexcept 等
【问题讨论】:
-
你为什么要这样做?
-
啊,没有问题,我正在尝试使用智能指针编写一些前置条件和后置条件。我可以使用我自己编写的手写智能指针让它们足够轻松地工作,但想看看我是否可以使用一些预建的,例如STL 或提升。
-
也许看看这个其他问题:stackoverflow.com/questions/15876325/…
-
@JoachimPileborg 您正在谈论部分专业化。一个完整的专业化可以是独立的
-
@PMcK 也许
shared_ptr从它的(隐藏的)基类like here 继承operator->
标签: c++ templates c++11 stl shared-ptr