C++11 "auto"关键字会检索"cv-qualifier"吗?我有冲突样本
Does C++11 "auto" keyword retrieve "cv-qualifier" at all? I've got conflict samples
据说"auto"不会检索cv限定符,所以我做了一个实验:
const int i = 0;
auto r1 = i;
auto& r2 = i;
r1 = 3;//ok
r2= 3;//compilation error
似乎在构造值时,cv限定符不与新变量一起使用,而是与引用"&"一起使用,cv限制符与它一起使用。为什么,自动检索"cv限定词"?
auto
推导在大多数情况下与模板推导相同。仅auto
删除所有cv-限定符,但auto&
保留引用类型的cv限定符。如果auto&
删除了限定符,则可以对const对象进行非常量引用,这将是不好的!这与的工作方式完全相同
template <class T> deduce(T );
template <class T> deduce_ref(T& );
deduce(i); // calls deduce<int>
deduce_ref(i); // calls deduce<int const>
由于r2
是对const int
的引用,所以不能分配给它。但r1
只是i
的副本。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- C++尝试深度复制唯一指针时出现内存访问冲突
- 错误:使用通用引用的声明冲突
- 如何解决GTest和LibTorch联动冲突
- 两个运营商的一些奇怪的冲突<<
- 如何在多个线程中创建 QSql数据库连接时防止名称冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- C++17 十六进制浮点文字单精度后缀冲突?
- 结构字段名称与 GDB 中的 STL 数组冲突
- 写入访问冲突异常
- C++ |匿名命名空间与命名空间 std 冲突
- C++11 "auto"关键字会检索"cv-qualifier"吗?我有冲突样本