const int i = 42;
const auto &k = i;
k
应为const int&
或仅int
(因为const
之前已指定auto
)?
注意:
cout << "k is " << typeid(k).name() << endl;
打印i
答案 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;
}