2011-02-24 44 views

Trả lời

4

Tôi không biết về sự biến dạng như vậy.

Không phải tất cả các trình vòng lặp đều có một bộ kiểm định tương ứng. Ví dụ. insert_iterator. Vì vậy, một metafunction như vậy sẽ cần phải quyết định những gì nó sẽ làm trong trường hợp như vậy.

0

Tôi có thể nghĩ gì đó cho một số reverse_iterator: sử dụng chức năng base thành viên decltype, người ta có thể trích xuất loại trả về để quay lại iterator.

Tuy nhiên, không có chức năng như vậy cho iterator/const_iterator, do đó rất khó để biết cách đạt được điều này, thiếu cung cấp typedef bên trong hoặc yêu cầu chuyên môn rõ ràng.

0

Tôi nghĩ rằng một giải pháp chung cho vấn đề của bạn (và một trong đó cũng sẽ được di động là không thể). Ít nhất tôi không thể tưởng tượng một :-).

Vấn đề khó khăn ở đây là vùng chứa xác định loại const_iterator. Để có được loại const_iterator cho vùng chứa, bạn phải xác định loại vùng chứa.

Tuy nhiên, nếu bạn bắt đầu với loại trình lặp của vùng chứa làm tham số metafunction thì không thể truy xuất loại vùng chứa.

Đối biết T (s) những gì bạn muốn có thể đạt được tuy nhiên ...

0

Tôi không nghĩ rằng đây có thể vì không thường không được xác định rõ ánh xạ giữa các loại iterator. Ví dụ: hai vùng chứa có thể chia sẻ loại trình lặp không phải là const, nhưng có các trình lặp vòng lặp const khác nhau. Nói chung, bạn chỉ có thể ánh xạ từ các loại vùng chứa đến các loại trình vòng lặp, chứ không phải giữa các loại trình vòng lặp hoặc từ một loại trình vòng lặp đến một loại vùng chứa.

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