Здравствуйте, Marty, Вы писали:
M>struct Cursor
M>{
M> Cursor() = delete;
M> Cursor(const Cursor&) = default;
M> Cursor& operator=(const Cursor&) = default;
M> Cursor(Cursor&&) = default;
M> Cursor& operator=(Cursor&&) = default;
M> Cursor(std::shared_ptr<ICursor> pimpl) : m_pImpl(pimpl) {}
M>protected:
M> std::shared_ptr<ICursor> m_pImpl;
M>};
А зачем так многословно? Абсолютно то же самое можно было получить гораздо лаконичнее, вот стопроцентный эквивалент:
struct Cursor
{
Cursor(std::shared_ptr<ICursor> pimpl) : m_pImpl(pimpl) {}
protected:
std::shared_ptr<ICursor> m_pImpl;
};
Ну и конструктор я бы объявил как explicit.