【发布时间】:2017-08-08 00:13:13
【问题描述】:
以下代码编译良好:
g++ -std=c++11 test.cpp -Wall -Wextra -Wfatal-errors && ./a.out
但是,如果我从{*this} 中删除花括号并改用*this,我将面临错误:
错误:使用已删除的函数‘Obj::Position::Position(Obj::Position&&)’
{*this} 和 *this 有什么区别?
class Obj
{
template<bool> friend class Position;
double data;
public:
class Position
{
const Obj& ref;
public:
inline Position(const Obj& ref): ref(ref){}
inline Position(Position const &) = delete;
inline Position(Position &&) = delete;
};
inline Obj(){}
inline Obj(const double &data): data(data){}
inline auto get_pos() const-> Position{return {*this};} /* <--- here */
inline auto get_pos()-> Position{return {*this};}
};
int main()
{
return 0;
}
【问题讨论】: