Lobsters | 📄 原文链接 | 2026-08-13 收录

C++26:std::indirect——给堆上对象补上值语义

来源:sandordargo.com — 2026-08-12

📋 概述

C++26 在 <memory> 中引入两个新词汇类型:std::indirect 和 std::polymorphic,由 P3019R14 提出,为堆分配对象赋予值语义。本文聚焦 std::indirect:它修复了 unique_ptr 作为成员时的两大缺陷——const 传播被破坏和拷贝被删除。indirect 提供深拷贝、const 传播、基于值的比较与哈希,常用于 PIMPL、递归类型与大成员场景,且可无样板地自动生成特殊成员函数。

🔑 核心要点

💡 金句

std::indirect 就是那个当初为组合类成员而设计、而不是为所有权转移设计的 unique_ptr。
← 返回 Lobsters 首页