Здравствуйте, Marty, Вы писали:
S>>Ну и как бы не видя базового класса это может превратиться в гадание по кофейной гуще.
M>struct NonCopiableObject : public IObject
M>{
M> NonCopiableObject() = default;
M> NonCopiableObject(const NonCopiableObject&) = delete;
M> NonCopiableObject& operator=(const NonCopiableObject&) = delete;
M> NonCopiableObject(NonCopiableObject&&) = default;
M> NonCopiableObject& operator=(NonCopiableObject&&) = default;
M>}; // struct NonCopiableObject
M>
Ну хорошо, а в IObject что? Ты в курсе, что, если ты объявил какой-то конструктор как default, это еще не гарантия того, что этот конструктор будет реально доступен? "default" на раз может реализоваться в "delete", если в классе присутствуют подобъекты(члены, базовые классы, члены базовых классов...) с явно или неявно удаленным конструктором.
Смотри, как получается, ты ждешь, что тебе помогут, не показывая всего кода. Так можно потратить уйму времени с нулевым результатом.
Я бы предложил тебе поработать над минимизированным примером, воспроизводящем проблему, который можно было бы загрузить в какой-нибудь онлайн компилятор. И очень вероятно, что ошибку ты найдешь сам, в процессе работы над этим примером.