c++ - 为什么标准库智能指针不重载`operator->*`?
问题描述
以下代码段无法编译,我想知道为什么会这样。
#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;
}
解决方案
推荐阅读
- linux - 尽管有断线,但需要 grep/awk/gawk 返回整个部分
- angular - 使用
, 插入到表单中的数据在更改段时丢失 - google-cloud-speech - Google Speech API 中的扬声器分类支持
- wpf - 使用 Web API -Identity Server 4 的 Wpf 应用程序
- apache-kafka - Kafka Streams - 主题中的消息数量不一致
- c# - C# 在使用 GCHandle 固定数组并传递给 C 函数时保持类型安全
- vim - Vim:无法使用 Control+Shift+(左或右)选择单词
- python - 如何在使用 Keras 构建和训练的神经网络中处理错误预测?
- ios - Fabric 多目标错误:Crashlytics “致命错误:'Crashlytics/Crashlytics.h' 文件未找到”
- c# - 如何在 Web.config 中配置路由