gpt4 book ai didi

c++ - 函数模板不识别左值

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

我的代码有问题

这是它的简化版本:

#include <iostream>
class A
{
public :
template <class T>
void func(T&&)//accept rvalue
{
std::cout<<"in rvalue\n";
}

template <class T>
void func(const T&)//accept lvalue
{
std::cout<<"in lvalue\n";
}
};
int main()
{
A a;
double n=3;
a.func(n);
a.func(5);
}

我希望输出是:

in lvalue
in rvalue

不过是

in rvalue 
in rvalue

为什么?!

最佳答案

template <class T> void func(T&&) 通用引用 转发引用

要测试您想要的,请尝试:( Live example )

template <typename T>
class A
{
public:
void func(T&&)//accept rvalue
{
std::cout<<"in rvalue\n";
}
void func(T&)//accept lvalue
{
std::cout<<"in lvalue\n";
}
};

int main()
{
A<double> a;
double n = 3;
a.func(n);
a.func(5.);
}

关于c++ - 函数模板不识别左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22166767/

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