为什么标准库智能指针不重载`operator-> *`?

时间:2019-09-28 07:01:22

标签: c++

以下代码段无法编译,我想知道为什么会这样。

#include <memory>

struct Foo {
  int value;
};

int main() {
  auto ptr = std::make_unique<Foo>();
  auto member = &Foo::value;
  ptr->*member = 42;
  return ptr->*member;
}

为什么以下(或写得更好的东西)没有包含在标准库中?

template <typename Class, typename MemberPtr>
decltype(auto) operator->*(const std::unique_ptr<Class> &ptr, MemberPtr member) noexcept {
  return ptr.get()->*member;
}

0 个答案:

没有答案