Currently, directory contains a std::deque<directory> _dirs. This std::deque is instantiated with the incomplete type directory.
class directory {
std::deque<directory> _dirs;
As far as I can tell, this isn't allowed by the standard, and MSVC rejects it.
The cppreference entry on std::deque seems to imply that it doesn't allow incomplete types, especially when juxtaposed with std::vector. It's not just cppreference, n4659 does the same:
An incomplete type T may be used when instantiating vector if the allocator satisfies the allocator completeness requirements. T shall be complete before any member of the resulting specialization of vector is referenced.
Currently,
directory
contains astd::deque<directory> _dirs
. Thisstd::deque
is instantiated with the incomplete typedirectory
.As far as I can tell, this isn't allowed by the standard, and MSVC rejects it.
The cppreference entry on
std::deque
seems to imply that it doesn't allow incomplete types, especially when juxtaposed withstd::vector
. It's not just cppreference, n4659 does the same:[vector]:
[deque] has no such mention.