gpt4 book ai didi

c++ - 为什么不使用 is_const 类型特征将 const 引用视为 const?

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:18 25 4
gpt4 key购买 nike

<分区>

令我惊讶的是下面的代码:

#include <iostream>
#include <type_traits>

using namespace std;

int main(int argc, char* argv[]) {
cout << boolalpha << is_const<const float&>::value << endl;

return 0;
}

打印 false。删除引用可以正常工作:

#include <iostream>
#include <type_traits>

using namespace std;

int main(int argc, char* argv[]) {
cout << boolalpha << is_const<remove_reference<const float&>::type>::value << endl;

return 0;
}

打印出 true

两者都是用 g++ -std=c++11 test.cpp 编译的,使用 G++ 版本:

g++ (Ubuntu 5.3.0-1ubuntu1~14.04) 5.3.0 20151204

仔细想想,我可以理解这里有两种类型在起作用:引用类型和被引用的类型。引用的类型是const,所以第二种情况是有意义的。对于第一种情况,我希望它在引用类型为 const 时返回,或者始终返回 true,因为引用 AFAIK 无法“重新分配”。

为什么它返回 false 而不是?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com