2012-01-19 63 views
25
std::map<std::string, int> m = { 
    {"Marc G.", 123}, 
    {"Zulija N.", 456}, 
    {"John D.", 369} 
}; 

Trong Xcode, tôi đã đặt ngôn ngữ C++ thành "C++ 0x [-std = C++ 0x]" và C++ Standard Library set vào thư viện chuẩn "libC++ LLVM C++ với hỗ trợ C++ 0X"Tại sao tôi nhận được "không tổng hợp không thể được khởi tạo với danh sách bộ khởi tạo"

Tôi có cần phải đặt thứ gì khác không?

+0

Cú pháp có vẻ chính xác có hoặc không có '=' (giả sử bạn đã đưa tiêu chuẩn :: chuỗi trong phạm vi của khóa học). –

+0

'g ++ -std = C++ 11 ' –

Trả lời

28

EDIT 10/2013: câu trả lời này thực sự cũ, Apple Clang hiện hỗ trợ tính năng này ngay bây giờ.

C++ 11 Initializer Chức năng chưa được hỗ trợ như của Clang 3,0

Xem tình hình thực hiện ở đây: Clang C++11 implementation status

(cú pháp của bạn có vẻ đúng nếu chỉ trình biên dịch hỗ trợ tính năng này)

+0

Ồ, tôi nghĩ nó phụ thuộc vào thư viện được sử dụng. Tôi đoán nó có ý nghĩa hơn rằng trình biên dịch cần hỗ trợ nó. – joels

+5

Bạn có thể thử dùng GNU ++ 11 (-std = gnu ++ 11). Khá chắc chắn nó hỗ trợ các danh sách khởi tạo. – rgbrgb

+2

-std = gnu ++ 11 làm việc cho tôi - là sự biên dịch khác biệt trong Xcode hoặc từ makefile – chaosless

11

Clang 3.6.2 hỗ trợ cú pháp danh sách khởi tạo. Chỉ cần nhớ để vượt qua -std=c++11 cờ khi biên dịch.

Các vấn đề liên quan