首页 > 解决方案 > std::add_const,为什么这个实现可以参考?

问题描述

在 cppreferenceadd_const中,据说我们可以将其实现为:

template< class T> struct add_const { typedef const T type; };

当我尝试引用类型时,比如std::add_const<int&>,它是int&

我的问题是为什么它可以在没有特定版本供参考的情况下工作,因为int& const它是非法的?</p>

标签: c++c++11

解决方案


在 C++11 标准的 [dcl.ref]p1 中,您可以找到:

cv 限定引用格式错误,除非通过使用 typedef (7.1.3) 或模板类型参数 (14.3) 引入 cv 限定符,在这种情况下忽略 cv 限定符。


推荐阅读