以下代码段无法编译,我想知道为什么会这样。
#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;
}