如何让模板化函数要求其参数通过右值引用传递



由于转发引用和右值引用的语法令人困惑,我不清楚如何编写一个通过右值引用采用某种类型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);

突然间,它通过转发引用而不是通过右值引用来获取CCD_ 3。转发引用foox的正确说法是什么?像这样?

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>);

相关内容

  • 没有找到相关文章

最新更新