我想将类型 T 的非常量左值引用绑定到类型 T 的临时值

I want to bind a a non-const lvalue reference to type T to a temporary of type T

有 trick/cast 让我这样做吗?

#include <vector>

std::vector<int> getBar(){
  std::vector<int> bar (5,200);   // five ints with a value of 200    
  return bar;
}

int main ()
{
  std::vector<int> foo (3,100);   // three ints with a value of 100

  foo.swap(getBar());

  return 0;
}

在这个具体案例中

foo = getBar(); 

是一个很好的答案。我想知道除了 swap 采用非 const 引用之外,是否有其他方法可以完成该任务。

你可以定义一个辅助函数,std::move

的“相反”
template<typename T>
constexpr std::remove_reference_t<T> &stay(T &&t) { // perhaps "temporary" is a better name
    return t;
}

在您的情况下,纯右值将具体化为绑定到右值引用的 xvalue,这让我们可以构造一个引用同一对象的左值。

foo.swap(stay(getBar());

像往常一样,临时文件一直存在到完整表达式的末尾(到分号),所以这是安全的(假设 swap 不尝试将引用保存在某处)。