【发布时间】:2015-04-21 18:01:11
【问题描述】:
类似于this question,但不是完美的对象转发成员,我想知道如何完善STL容器的转发元素,即类似于
struct X {};
void f(X&);
void f(X&&);
template <typename Vector>
void g(Vector&& v, size_t i) {
if (is_lvalue_reference<Vector>::value) {
f(v[i]);
} else {
f(move(v[i]));
}
}
【问题讨论】:
-
你能举个例子说明你想做什么吗?
-
@Barry,我已遵循规则 sscce.org 将其修剪为最小大小写。实际用例很复杂。我想从
vector<U1>、vector<U2>、......创建vector<T>,其中每个元素T是从U1、U2、......每个数组vector<Ui>构造的可以是 & 或 &&,我希望Ui被完美转发。 -
@Barry 目标是从
v[i]转移,如果v绑定到右值。
标签: c++ c++11 perfect-forwarding