Следующий код компилируется отлично:
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;
}