c++ - std::add_const,为什么这个实现可以参考?
问题描述
在 cppreferenceadd_const
中,据说我们可以将其实现为:
template< class T> struct add_const { typedef const T type; };
当我尝试引用类型时,比如std::add_const<int&>
,它是int&
。
我的问题是为什么它可以在没有特定版本供参考的情况下工作,因为int& const
它是非法的?</p>
解决方案
在 C++11 标准的 [dcl.ref]p1 中,您可以找到:
cv 限定引用格式错误,除非通过使用 typedef (7.1.3) 或模板类型参数 (14.3) 引入 cv 限定符,在这种情况下忽略 cv 限定符。
推荐阅读
- sql - SQL 返回相同的数据或重复
- apache-kafka - Kafka 流在从处理器转发消息时抛出 RecordTooLargeException 异常
- javascript - React Hooks - 未捕获的不变违规:对象作为 React 子对象无效
- r - 如何使用 R 上的传单在 Lambert 93 中投影光栅+多边形?
- ms-word - 如何在后台视图中将焦点设置在自定义选项卡上
- uikit - 从 UIImage 转换为 SwiftUI Image 会导致相同大小的空白图像
- ffmpeg - 使用 FFMPEG 将 DAV 文件转换为 AVI 失败
- java - 如何传递点击次数并在另一个活动中重置计数?
- flutter - 使用 eachFor 遍历包含地图列表的地图
- hybris - 业务流程自定义属性问题