C++ 成员函数的完美转发和引用限定符

C++ 成员函数的完美转发和引用限定符,c++,c++11,perfect-forwarding,ref-qualifier,C++,C++11,Perfect Forwarding,Ref Qualifier,C++11引入了ref限定成员函数的能力,以及完美的转发。但是我们能把它们混在一起吗 考虑以下(工作)示例: 在main()内部,第一个调用调用version 1或bar::do_stuff(),第二个调用version 2或bar::do_stuff()。foo::do_stuff()中有一些代码重复。如果ref限定符用于隐含的*this之外的参数,我们可以轻松地完成完美的转发: template <typename T> void do_stuff (T&& t)

C++11引入了ref限定成员函数的能力,以及完美的转发。但是我们能把它们混在一起吗

考虑以下(工作)示例:

main()
内部,第一个调用调用version 1或
bar::do_stuff()
,第二个调用version 2或
bar::do_stuff()
foo::do_stuff()
中有一些代码重复。如果ref限定符用于隐含的
*this
之外的参数,我们可以轻松地完成完美的转发:

template <typename T>
void do_stuff (T&& t) {
    std::forward<T>(t).do_stuff();
}
模板
无效待办事项(T&T){
std::forward(t).do_stuff();
}
有没有一种等效的方法可以将
*这个
对象完美地向前移动

注意:如果正确的解决方案只存在于C++14或C++17中,我也很乐意知道。

据我所知(as或cv限定符)。
template <typename T>
void do_stuff (T&& t) {
    std::forward<T>(t).do_stuff();
}