Nếu tôi mãC++, tôi có thể khởi tạo tĩnh std :: map tại thời gian biên dịch không?
std::map<int, char> example = {
(1, 'a'),
(2, 'b'),
(3, 'c')
};
sau đó g này ++ nói với tôi
deducing from brace-enclosed initializer list requires #include <initializer_list>
in C++98 ‘example’ must be initialized by constructor, not by ‘{...}’
và làm phiền tôi một chút vì các nhà xây dựng được thời gian chạy và có thể, về mặt lý thuyết thất bại.
Chắc chắn, nếu có, nó sẽ thất bại nhanh chóng và phải làm như vậy một cách nhất quán, để tôi phải nhanh chóng xác định vị trí & khắc phục sự cố.
Nhưng, vẫn còn, tôi tò mò - là có anyway để khởi tạo bản đồ, vector, vv, tại thời gian biên dịch?
Chỉnh sửa: Tôi phải nói rằng tôi đang phát triển cho các hệ thống nhúng. Không phải tất cả các bộ vi xử lý sẽ có trình biên dịch C++ 0x. Phổ biến nhất có lẽ sẽ, nhưng tôi không muốn gặp phải một gotcha & phải duy trì 2 phiên bản của mã.
Để tăng cường, tôi chưa quyết định. Họ rất vui khi sử dụng các lớp máy hữu hạn của họ trong các hệ thống nhúng, vì vậy đó thực sự là những gì tôi đang viết mã ở đây, các lớp Event/State/Fsm.
Sigh, tôi đoán tôi nên chơi nó an toàn hơn, nhưng tôi hy vọng rằng cuộc thảo luận này hữu ích cho người khác.
Kiểm tra http://www.state-machine.com/ đối với thư viện SM được nhúng. – rpg
Cảm ơn, tôi biết về nó (nhưng vẫn +1 vì nó có thể giúp người khác). Nó có vẻ hơi quá nhiều đối với tôi, nhưng sau đó tôi cũng cần o/s trừu tượng, vì vậy ... có lẽ ... Có lẽ nó chỉ là không phát minh-đây hội chứng ;-) – Mawg
Đây là [câu trả lời cho một tương tự như câu hỏi tràn ngăn xếp] (http://stackoverflow.com/a/1730798/758666), mà làm cho một sử dụng thông minh của một lớp mẫu và quá tải nhà điều hành. – wil