次のコードは、libc++ を使用して、clang 3.1 でコンパイルされません (Xcode に付属している現在のバージョンがわからない)。他の標準ライブラリで問題なく動作します。コードにエラーがありますか、それとも libc++ のバグですか?
#include <map>
#include <string>
using namespace std;
struct A {
A(const map<int, A>& m) {}
};
struct B {
map<string, A> m;
};
私が見ているエラーは次の<utility>
とおりです。
/usr/lib/c++/v1/utility:241:64: No member named 'value' in 'std::__1::is_nothrow_copy_constructible<A>'
私はそれをさらに分離しようとしましたが、これは私が見つけた最小限の例です. 興味深いことに、2 番目のマップで置き換えると機能します (最初のマップを int で置き換える場合も同様string
です) 。int
int
string
map<string, A> m; // Does not work
map<int, A> m; // Works