当const与auto一起使用时,什么类型的引用(或指针)?

时间:2016-07-10 02:53:09

标签: c++ c++11

const int i = 42;
const auto &k = i; 

k应为const int&或仅int(因为const之前已指定auto)?

注意: cout << "k is " << typeid(k).name() << endl;打印i

2 个答案:

答案 0 :(得分:1)

我继续这样的代码

const int i = 42;
const auto &k = i;

k = 21;

并收到错误消息:

error: cannot assign to variable 'k' with const-qualified type 'const int &'

所以k显然是'const int&amp;'类型。显然typeid无法捕获孔类型。但当然编译器是。

答案 1 :(得分:0)

如果您不确定两种类型是否相同,则可以随时使用std::is_same进行检查。

#include <iostream>
#include <type_traits>

int main() {
    const int i = 42;
    const auto &k = i;

    std::cout << std::boolalpha
              << std::is_same<decltype(i), std::remove_reference<decltype(k)>::type>::value << std::endl;
}