有关右值和左值引用成员函数的问题,不知道为什么有错?
程序代码:
#include <iostream> #include <vector> using namespace std; class Foo { public: Foo()=default; Foo(initializer_list<int> il):data(il) {} Foo sorted() &&; Foo sorted() const &; void print() const; private: vector<int> data; }; Foo Foo::sorted() && { sort(data.begin(),data.end()); cout<<"调用右值引用函数"<<endl; return *this; } Foo Foo::sorted() const & { Foo ret(*this); sort(ret.data.begin(),ret.data.end()); cout<<"调用左值引用函数"<<endl; return ret; } void Foo::print() const { for(auto c:data) cout<<c<<" "; } int main() { Foo f1({3,4,6,1,8,9,0,2}),f2({7,6,5,4,3}); f1.sorted(); std::move(f2).sorted(); f1.print(); f2.print(); return 0; }
成员函数sorted那里提示有错!不知道为什么?