如何让模板函数要求其参数通过右值引用传递?
How to have a templated function require its argument be passed by rvalue reference?
由于转发引用和右值引用的语法令人困惑,我不清楚如何编写一个采用某种类型 T
通过右值引用的函数。也就是说,while
template <typename T> void foo(T x);
按值取 x
和
template <typename T> void foo(T& x);
参考,
template <typename T> void foo(T* x);
通过指针,当我们说
template <typename T> void foo(T&& x);
突然 x
通过转发引用而不是右值引用。 foo
通过转发引用获取 x
的正确方法是什么?像这样?
template <typename T>
void foo(T&& x) {
static_assert(std::is_rvalue_reference_v<T&&>, "x must be an rvalue reference.");
template<class T>
void f(T &&)
requires(!std::is_lvalue_reference_v<T>);
由于转发引用和右值引用的语法令人困惑,我不清楚如何编写一个采用某种类型 T
通过右值引用的函数。也就是说,while
template <typename T> void foo(T x);
按值取 x
和
template <typename T> void foo(T& x);
参考,
template <typename T> void foo(T* x);
通过指针,当我们说
template <typename T> void foo(T&& x);
突然 x
通过转发引用而不是右值引用。 foo
通过转发引用获取 x
的正确方法是什么?像这样?
template <typename T>
void foo(T&& x) {
static_assert(std::is_rvalue_reference_v<T&&>, "x must be an rvalue reference.");
template<class T>
void f(T &&)
requires(!std::is_lvalue_reference_v<T>);