У меня сейчас есть такая установка:
template<typename T> class Parent {
struct Nested;
std::unique_ptr<Nested> ptr;
public:
// stuff
~Parent();
};
template<typename T> struct Parent<T>::Nested {
Parent<T> p;
// stuff
};
Visual Studio выдает ошибку, что структура Nested
использует неполный тип Parent
- даже если определение после класс Parent
завершен.
Как я могу решить эту проблему?
Редактировать: Если это не было очевидно, я использовал определение деструктора с задержкой до тех пор, пока после не будет определен класс Nested
, чтобы разрешить unique_ptr
для неполного типа. Кроме того, это совершенно определенно не связано с этим, потому что ошибка не в том, что Nested
неполный, а в том, что Nested
содержит член типа Parent
, который является неполным. Кроме того, если я явно удалю средство удаления с помощью std::function<void(Nodes*)>
, проблема не будет решена.