3
大多數C++編譯器我曾與接受以下正向聲明地圖的映射的類型和C++ 11
#include <map>
struct A;
struct B
{
typedef std::map<int,A>::iterator iterator;
std::map<int,A> test;
};
struct A
{
};
int main()
{
return 0;
}
然而,蘋果鐺4.0
clang++ test.cpp -o test -std=c++11 -stdlib=libc++
產生編譯在std :: map可以使用之前,暗示A必須是完整類型的錯誤集合。這是map的libC++實現中的一個缺陷,這是C++ 11強加的一個新要求,還是我的錯誤假設?
我認爲會是這樣。 –