gpt4 book ai didi

c++ - 完美转发对象成员

转载 作者:IT老高 更新时间:2023-10-28 22:26:15 26 4
gpt4 key购买 nike

假设我有两个 struct:

struct X {};
struct Y { X x; }

我有函数:

void f(X&);
void f(X&&);

如何编写一个函数 g() 接受 Y&Y&& 但完美转发 X&X&&f(),分别为:

template <typename T>
void g(T&& t) {
if (is_lvalue_reference<T>::value) {
f(t.x);
} else {
f(move(t.x));
}
}

上面的代码说明了我的意图,但随着参数数量的增加,它的可扩展性并不高。有没有办法让它完美转发并使其可扩展?

最佳答案

template <typename T>
void g(T&& t) {
f(std::forward<T>(t).x);
}

关于c++ - 完美转发对象成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570655/

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