gpt4 book ai didi

c++ - 选择带有左值或右值参数的函数声明

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:46 26 4
gpt4 key购买 nike

有没有办法删除我所有函数的“plumb”版本,而不需要将“hit”行更改为“fixed”?

是的,我的程序工作正常,但我想是否有办法从我所有功能的这个版本中获得乐趣。

请记住 int不是真的int在我的程序中,但类型别名可以是对象(例如 container_reference<std::array<double,4>>)或引用(例如 std::array<double,4> &)

void func(int &&m) { cout << "rvalue: " << m << endl; }
void func(int &m) { cout << "lvalue: "; func(std::move(m)); } // PLUMB!

int main()
{
int a = 5;
func(a); // HIT!
func(std::move(a)); // FIXED!
func(6);
func(a + 5);
}

最佳答案

我不太清楚你想要什么,但这可能是一个选择:

template<typename T>
void func(T &&m) {
// ...
}

T&& 被称为“通用引用”,因为它会根据引用折叠规则绑定(bind)到左值和右值。

关于c++ - 选择带有左值或右值参数的函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15854747/

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