gpt4 book ai didi

c++ - 显式传递模板参数时,函数模板参数丢失常量?

转载 作者:行者123 更新时间:2023-12-03 06:50:26 32 4
gpt4 key购买 nike

template <typename T>
void test(const T& x) {}

int a {};
int& ref = a;
const int& c_ref = a;

test(c_ref) // T = int, x = const int&
test<int&>(ref); // T = int& , x = int&
为什么函数模板参数x会丢失 const预选赛?

最佳答案

在显式(非推导)实例化中

test<int&>(ref);
这是你得到的(理论上的)签名
void test<int&>(const (int&)& x)
这表明 const -资格适用于整个 (int&) ,而不仅仅是 int . const适用于剩下的,如果没有,它适用于正确的: int& , 但作为一个整体 - 它适用于 & , 再次因为 const适用于左侧的内容。但是没有 const引用(它们根本不可更改,即它们不能重新绑定(bind)), const被删除,并且引用折叠规则收缩两个 &合而为一。

关于c++ - 显式传递模板参数时,函数模板参数丢失常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64893722/

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