1

由于转发引用和右值引用的语法令人困惑,我不清楚如何编写一个T通过右值引用获取某种类型的函数。也就是说,虽然

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.");
4

1 回答 1

1
template<class T>
void f(T &&)
requires(!std::is_lvalue_reference_v<T>);
于 2022-02-18T13:33:40.593 回答