Является ли следующий код законным?Является ли итератором контейнер с неполным типом данных законным?
class A
{
std::map<int, A>::iterator x;
};
Visual Studio 2015 принимает его, но лязг говорит
.../ndk/sources/cxx-stl/llvm-libc++/libcxx/include/utility:254:9:
error: field has incomplete type 'A'
_T2 second;
^
....
a.cpp:52:21:
note: definition of 'A' is not complete until the closing '}'
struct A
^
Edit:
Проблема, кажется, со стандартной библиотекой, http://rextester.com/QNNEG57036 терпит неудачу на этом
Мой вопрос, является ли код является законным или нет, а не как его исправить (например, изменением флагов компилятора).
clang 3.8 компилирует такой код без ошибок – fghj
@ user1034749: Я не проверял, в каком контейнере он на самом деле жалуется только на карту – Dani
Жалуется ли он на список? –