gpt4 book ai didi

c++ - 尝试使用 std::add_const 将 T& 转换为 const T&

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:09 24 4
gpt4 key购买 nike

我有一个 T&,它有一个函数的 const 和非常量版本。我想调用该函数的 const 版本。我尝试使用 std::add_const 将 T& 转换为 const T& 但它不起作用。我做错了什么,我该如何解决?

这是一个简单的例子。

void f(int&)
{
std::cout << "int&" << std::endl;
}

void f(const int&)
{
std::cout << "const int&" << std::endl;
}

int main()
{
int a = 0;
int& r = a;
f(static_cast<std::add_const<decltype (r)>::type>(r));
}

输出:int&

最佳答案

类型特征是解决这个问题的一种非常费力的方法。只需使用模板类型推导:

void f(int&)
{
std::cout << "int&" << std::endl;
}

void f(const int&)
{
std::cout << "const int&" << std::endl;
}

template<typename T>
const T& make_const(T& t) { return t; }

int main()
{
int a = 0;
int& r = a;
f(make_const(r));
}

关于c++ - 尝试使用 std::add_const 将 T& 转换为 const T&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23705213/

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